Am confused about web.config in .NET Core

前端 未结 3 1064
陌清茗
陌清茗 2021-02-12 22:47

There are a bunch of contradictory statements about web.config and .NET Core.

  • Places saying it\'s gone.
    • https://dotnetcore.show/episode-10-configuration-
相关标签:
3条回答
  • 2021-02-12 23:20

    In a .NET Framework Web application, web.config is used for two purposes:

    1. To store configuration for the web application.

    2. To store configuration for the IIS that hosts the application (system.webServer element).

    In a .NET Core Web application, you have at least two choices for storing application configuration:

    • Use a .NET Core Configuration Provider, often with a json configuration file.

    • Use the System.Configuration.ConfigurationManager NuGet package with recent versions of .NET Core (2.0+ I think). One advantage of using System.Configuration.ConfigurationManager is that it can be used in .NET Standard 2.0 libraries that are compatible with both .NET Core and .NET Framework.

    If you choose to use System.Configuration.ConfigurationManager in a .NET Core web application, you need to add an app.config (not web.config) file to your Visual Studio project. When you build this project it will be copied to the output directory and renamed as appName.dll.config.

    If you are hosting your .NET Core web application in IIS, you can still need a web.config file with configuration for IIS (system.webServer element). I.e. your application may need both app.Config and web.config.

    Personally I prefer to use System.Configuration.ConfigurationManager and an app.config XML configuration file, for several reasons including compatibility with .NET Framework, the fact that it's easy to comment out bits of XML, etc. YMMV of course.

    0 讨论(0)
  • 2021-02-12 23:20

    Read a few web.config examples from Google and you should notice that,

    1. ASP.NET/WCF 2.x/4.x uses it to store configuration (tags like <system.web>).
    2. IIS uses it to store configuration (tags like <system.webServer>).

    So migrating to ASP.NET Core only make the first obsolete, and you should only say goodbye to that piece of knowledge.

    If you host your web app on IIS, then web.config is still needed, as you need initial settings there to configure ASP.NET Core module for IIS/IIS Express (dotnet publish generates such a file if you don't have your own).

    0 讨论(0)
  • 2021-02-12 23:37

    This may be incorrect feel free to correct me but the way I understand it.

    web.config was used to give some information to the hosting software like IIS some configuration details to help run the app correctly.

    In dotnet core You have a layer between the hosting software like IIS and your Web App, and it's called Kestrel.

    Kestrel is a proxy between the two. And the default web.config that you see, if you peek inside you will see default code which basically says, i'm a dotnet core app use the dotnet core runtime to run me. You can still put config there to tell IIS how to work, I specifically used it to increase the file upload size and windows authentication.

    I would configure HTTP Headers using the middle ware.

    0 讨论(0)
提交回复
热议问题