ASP.NET Core 6 基础入门系列(16) 项目的 web.config 文件详解

web.config 文件由 IIS 和 web.config读取,用于使用 IIS 配置已托管的应用。

web.conifg 文件位置

  为了正确设置 ASP.NET Core Module,web.config 文件必须存在于已部署应用的内容根路径(通常为应用基路径)中。 该位置与向 IIS 提供的网站物理路径相同。 若要使用 Web 部署发布多个应用,应用的根路径中需要包含 web.config 文件。

  敏感文件存在于应用的物理路径中,如 {ASSEMBLY}.runtimeconfig.json{ASSEMBLY}.xml(XML 文档注释)和 {ASSEMBLY}.deps.json,其中 {ASSEMBLY} 占位符为程序集名称。

  • 如果有 web.config 文件且站点正常启动时,IIS 在收到敏感文件请求时不会提供这些敏感文件。
  • 如果 web.config 文件缺失、名字错误或者无法将站点配置为正常启动,IIS 可能会公开提供敏感文件。

web.config 文件必须始终存在于部署中、名称正确以及能够将站点配置为正常启动。 切勿从生产部署中删除 web.config 文件。

  • 如果项目中没有 web.config 文件,则该文件是使用正确的 processPatharguments(用于配置 ASP.NET Core Module)创建的,并且已被移到web.config中。
  • 如果项目中有 web.config 文件(在VS中手动添加的),则该文件是通过正确的 processPatharguments(用于配置 ASP.NET Core 模块)转换的,并且已被移到发布的输出中。 转换不会修改文件中的 IIS 配置设置。

正常项目开发过程中,不需要手动添加web.conifg文件,项目发布后在生成的 web.config  文件中做适当的调整即可满足大部分的项目应用需求。

发布项目时,web.config 文件的创建、转换和发布是由 MSBuild 目标 (_TransformWebConfig) 处理的。 此目标位于 Web SDK 目标 (Microsoft.NET.Sdk.Web) 中。

<Project Sdk="Microsoft.NET.Sdk.Web">

为了防止 Web SDK 转换 web.config 文件,请在项目文件中使用 <IsTransformWebConfigDisabled> 属性:

禁用 Web SDK 对文件的转换时,processPatharguments 应由开发人员手动设置(不会被发布功能覆盖)。 有关详细信息,请参阅用于 IIS 的 ASP.NET Core 模块 (ANCM)

使用 web.config 配置 ASP.NET Core 模块

在站点的 web.config 文件中使用 system.webServer 节点的 aspNetCore 部分配置 ASP.NET Core 模块。

aspNetCore 元素的属性如下

设置环境变量

  可以为 processPath 属性中的进程指定环境变量。 使用 <environmentVariables> 集合元素的 <environmentVariable> 子元素指定环境变量。 本部分中设置的环境变量优先于系统环境变量。

  以下示例在 web.config 中设置了两个环境变量。 ASPNETCORE_ENVIRONMENT 将应用的环境配置为 Development。 开发人员可能会暂时在 web.config 文件中设置此值,以便在调试应用异常时强制加载开发人员异常页面。 CONFIG_DIR 是用户定义的环境变量的一个示例,其中开发人员已写入可在启动时读取值的代码以便形成用于加载应用配置文件的路径。

复制代码
<aspNetCore processPath="dotnet"
      arguments=".\MyApp.dll"
      stdoutLogEnabled="false"
      stdoutLogFile=".\logs\stdout"
      hostingModel="inprocess">
  <environmentVariables>
    <environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" />
    <environmentVariable name="CONFIG_DIR" value="f:\application_config" />
  </environmentVariables>
</aspNetCore>
复制代码

直接在 web.config 中设置环境的替代方法是将属性包含在发布配置文件 (.pubxml)

或项目文件中

此方法在发布项目时设置 web.config 中的环境:

<PropertyGroup>
  <EnvironmentName>Development</EnvironmentName>
</PropertyGroup>

参考文献:

  • 《web.config 文件》https://learn.microsoft.com/zh-cn/aspnet/core/host-and-deploy/iis/web-config?view=aspnetcore-6.0
posted @   张传宁  阅读(14)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
页脚 HTML 代码
点击右上角即可分享
微信分享提示