appsettings.json 是否受 IIS 保护?

Is appsettings.json protected by IIS?

在遗留 ASP.NET 应用程序中,*.config 文件 无法通过导航到 URL 下载 。但新的约定是使用 appsettings.json。现在,如果我有一个名为 contoso.com 的 ASP.NET 核心网站,它由 IIS 从名为 C:\inetpub\websites\contoso.com 的目录提供服务,并且有一个文件位于 C:\inetpub\websites\contoso.com\appsettings.json...如果有人导航到 https://contoso.com/appsettings.json?

,IIS 足够聪明,知道不要通过 HTTP 提供此文件

文件通常从 "wwwroot" 文件夹提供。只要您没有将 C:\inetpub\websites\contoso.com\ 配置为应用程序的网络根目录,appsettings.json 文件就是安全的。默认情况下,静态文件位于 C:\inetpub\websites\contoso.com\wwwroot\ 中。我推荐这个优秀的文档:https://docs.microsoft.com/en-us/aspnet/core/fundamentals/static-files

顺便说一下,除非另外配置,IIS 甚至不检查文件系统。实际上 ASP.NET Core 将确保仅从 "wwwroot" 文件夹提供文件。 IIS 中典型的 ASP.NET Core 网站实际上是 运行 作为 IIS 通过 ASP.NET 核心模块反向代理的独立 Web 服务器。这意味着 所有 请求都由 ASP.NET 核心处理。要提供静态文件,您必须使用静态文件中间件,它在 Microsoft.AspNetCore.StaticFiles 包中可用。