Trying to understand the new behavior of appsettings.json vs web.config in .NET Core but confused by contradictory information on MSDN : <p>So, I'm reading through all of the .NET Core Fundamentals articles on MSDN while hacking around on a new .NET Core MVC application in Visual Studio 2017. There seem to be some inconsistencies between what I'm reading in the articles and what I'm seeing in my application. I was hoping somebody could help me understand.</p>

<p>So, I understand that a new .NET Core project created in Visual Studio, by default, is configured to use the Kestrel web server with an IIS Express web server acting as a reverse proxy when running in development.</p>

<p>I also understand that the ASP.NET Core Module hooks into the IIS pipeline and, among other things, redirects traffic to your .NET Core web application.</p>

<p>Here's what I'm getting hung up on.</p>

<p>From the MSDN article on .NET Core Configuration:</p>

<blockquote>
  <p>The web.config file A web.config file is required when you host the app in IIS >or IIS-Express. web.config turns on the AspNetCoreModule in IIS to launch your >app. Settings in web.config enable >the AspNetCoreModule in IIS to launch your >app and configure other IIS settings and modules. If you are using Visual >Studio and delete web.config, Visual Studio will create a new one.</p>
</blockquote>

<p>I was under the impression that in .NET Core, application configuration had been moved out of the web.config file, and was instead controlled through a number of different mechanisms, one of which is the appsettings.json file. In fact, creating a new .NET Core MVC application in Visual Studio doesn't even create a web.config file in my solution directory.</p>

<p>But from the article quoted above, it sounds like the ASP.NET Core Module is still configured through a web.config file? What's confusing is that the article says Visual Studio will create a web.config file for me if one doesn't exist, but I've run the application a few times and don't see a web.config file created anywhere.</p>

<p>What confuses me further is more seemingly contradictory information from the MSDN ASP.NET Core module reference article:</p>

<blockquote>
  <p>The ASP.NET Core Module is configured via a site or application web.config file >and has its own aspNetCore configuration section within system.webServer. >Here's an example web.config file that the Microsoft.NET.Sdk.Web SDK will >provide when the project is published for a framework-dependent deployment with >placeholders for the processPath and arguments:</p>
</blockquote>

<p>So wait - this says that the act of publishing my application is what creates the web.config file.</p>

<p>So is it only full blown IIS that needs a web.config file? Maybe IIS Express and IIS both work with default behavior if no web.config is provided, but I need a web.config file if I want to override the default behavior?</p>

<p>Does anybody have a solid understanding of how this all works in .NET Core that is willing to set me straight?</p>
