对.NET Core中的web.config感到困惑

时间:2019-01-12 10:15:38

标签: .net asp.net-core web-config

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

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


.NET Core中的web.config是怎么回事? 您应该如何做非“定制应用程序配置”的东西? (例如HTTP标头和其他HTTP级别配置)

3 个答案:

答案 0 :(得分:0)

这可能是不正确的,但是请以我的理解方式来纠正我。

web.config用于向诸如IIS之类的托管软件提供一些信息,以帮助正确运行该应用程序。

在dotnet核心中 在诸如IIS之类的托管软件和Web应用程序之间有一层,称为Kestrel。

红est是两者之间的代理。然后,您看到的默认web.config(如果您浏览里面)将看到默认代码,该代码基本上说:我是一个dotnet核心应用程序,请使用dotnet核心运行时来运行我。您仍然可以在其中放置config来告诉IIS如何工作,我专门使用它来增加文件上传大小和Windows身份验证。

我将使用中间件配置HTTP标头。

答案 1 :(得分:0)

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

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

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

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

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

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

我个人更喜欢使用System.Configuration.ConfigurationManager和一个app.config XML配置文件,这有几个原因,包括与.NET Framework的兼容性,易于注释掉XML的事实,等等。当然。

答案 2 :(得分:0)

阅读Google的一些web.config示例,您应该注意到,

  1. ASP.NET/WCF 2.x / 4.x使用它来存储配置(诸如<system.web>之类的标记)。
  2. IIS使用它来存储配置(诸如<system.webServer>之类的标签)。

因此,迁移到ASP.NET Core只会使第一个过时,而您只应告别那部分知识。

如果您将Web应用程序托管在IIS上,则仍然需要web.config,因为在那里需要进行初始设置才能为IIS / IIS Express配置ASP.NET Core模块(dotnet publish会生成这样的文件如果您没有自己的)。