.NET Core 中的 web.config 让我感到困惑。

25
关于web.config和.NET Core,有许多相互矛盾的说法。
一些地方表示它已经消失了。 - 来源:https://dotnetcore.show/episode-10-configuration-in-net-core/ 一些地方表示它过去是消失了,但现在又回来了。 - 来源:https://dev59.com/P1gQ5IYBdhLWcg3wlk7P#46771737 还有一些地方说它已不再必要,但你可以手动创建一个: - 来源: - https://dev59.com/l1kS5IYBdhLWcg3wN0O_#43890405 - https://dev59.com/P1gQ5IYBdhLWcg3wlk7P#53731666 此外,我刚刚将一个几乎未经修改的.NET Core应用程序部署到了Azure。在存储库中没有web.config文件,但当我在Kudu中浏览部署的代码时,却发现有web.config文件?
到底发生了什么呢?在.NET Core中如何处理非自定义应用程序配置?(例如HTTP头和其他HTTP级别配置)
2个回答

20
在.NET Framework Web应用中,web.config有两个作用:
  1. 用于存储Web应用程序的配置。

  2. 用于存储托管应用程序的IIS的配置 (system.webServer元素)。

在.NET Core Web应用程序中,您至少有两种选择可以存储应用程序配置: 如果您选择在.NET Core Web应用程序中使用 System.Configuration.ConfigurationManager,则需要将app.config文件添加到Visual Studio项目中。 当构建此项目时,它将被复制到输出目录并重命名为appName.dll.config。如果您在IIS中托管.NET Core Web应用程序,仍然需要一个带有IIS配置(`system.webServer`元素)的`web.config`文件。也就是说,您的应用程序可能需要同时使用`app.config`和`web.config`。
个人而言,我更喜欢使用`System.Configuration.ConfigurationManager`和一个`app.config` XML配置文件,原因包括与.NET Framework兼容性、易于注释XML代码等。当然,这因人而异。

2
你因为这句话“你需要添加一个app.config(而不是web.config)”而值得我点赞。 - Marco Alves

2

阅读一些来自谷歌的web.config示例,你应该会注意到:

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

因此,迁移到ASP.NET Core只会使第一个过时,你只需要放弃那部分知识。

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


这个答案在一片错误信息的海洋中犹如一束明亮的光芒。在IIS上进行托管时,确实仍然需要一个web.config文件。如果你选择这样做,你还可以在应用程序之外的web.config中控制URL重写和重定向。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接