首页 > 解决方案 > 我对 .NET Core 中的 web.config 感到困惑

问题描述

关于 web.config 和 .NET Core 有很多相互矛盾的说法。

此外,我刚刚向 Azure 部署了一个几乎全新的 .NET Core 应用程序。在存储库中,没有 web.config 但是当我在 Kudu 中探索部署的代码时,有一个 web.config 文件吗?


.NET Core 中的 web.config 发生了什么?你应该如何做非自定义应用配置的东西?(例如 HTTP 标头和其他 HTTP 级别配置)

标签: .netasp.net-coreweb-config

解决方案


在 .NET Framework Web 应用程序中,web.config 用于两个目的:

  1. 存储 Web 应用程序的配置。

  2. 存储承载应用程序(system.webServer元素)的 IIS 的配置。

在 .NET Core Web 应用程序中,您至少有两种选择来存储应用程序配置:

  • 使用.NET Core 配置提供程序,通常带有 json 配置文件。

  • System.Configuration.ConfigurationManager NuGet 包与最新版本的 .NET Core(我认为是 2.0+)一起使用。使用的一个优点System.Configuration.ConfigurationManager是它可以在与 .NET Core 和 .NET Framework 兼容的 .NET Standard 2.0 库中使用。

如果选择System.Configuration.ConfigurationManager在 .NET Core Web 应用程序中使用,则需要向Visual Studio 项目中添加app.config(不是)文件。web.config当您构建此项目时,它将被复制到输出目录并重命名为appName.dll.config.

如果您在 IIS 中托管 .NET Core Web 应用程序,您仍然需要一个web.config包含 IIS 配置的文件(system.webServer元素)。即您的应用程序可能同时需要app.Configweb.config

我个人更喜欢使用System.Configuration.ConfigurationManagerXMLapp.config配置文件,原因有几个,包括与 .NET Framework 的兼容性、很容易注释掉一些 XML 等事实。当然是 YMMV。


推荐阅读