Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Am confused about web.config in .NET Core

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

  • Places saying it's gone.
    • https://dotnetcore.show/episode-10-configuration-in-net-core/
  • Places saying it was gone but now it's back.
    • https://stackoverflow.com/a/46771737/1662268
  • Places saying that it's no longer necessary, but you can create one manually:
    • https://stackoverflow.com/a/43890405/1662268
    • https://stackoverflow.com/a/53731666/1662268

Additionally, I've just deployed a mostly-fresh-out-of-the-box .NET Core app to Azure. In the repository, there's no web.config but when I explore the deployed code in Kudu, there IS a web.config file?


What's going on with web.config in .NET Core? How are you supposed to do non-Custom-App-Configuration stuff? (e.g. HTTP headers and other HTTP level config)
like image 953
Brondahl Avatar asked Jan 12 '19 10:01

Brondahl


People also ask

Do we need Web config for .NET Core?

In order to set up the ASP.NET Core Module correctly, the web. config file must be present at the content root path (typically the app base path) of the deployed app.

What is Web config in .NET Core?

web. config file is an XML-based configuration file used in ASP. NET-based applications to manage various settings that are concerned with the configuration of our website. In this way, we can separate our application logic from configuration logic.

Can we run application without Web config?

Yes, you will be able to run an ASP.NET application without a WEB. CONFIG file in its root folder. If the application doesn't find a WEB. CONFIG file in its root folder, then it will take MACHINE.

What is difference between Web config and app config?

config is parsed at runtime, so if you edit the web. config file, the web application will automatically load the changes in the config file. Â app. config is parsed at compile time, so if you edit the app.


2 Answers

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.

like image 187
Joe Avatar answered Oct 20 '22 11:10

Joe


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).

like image 23
Lex Li Avatar answered Oct 20 '22 10:10

Lex Li