In general, there are two modes in which an ASP.NET Core application can run, when deployed in IIS.
- The application is hosted inside the IIS process and all the functioning happens from here. This is similar to any other general website deployed in IIS (through binaries).
- The application resides within the Kestrel Shell layer, and the IIS server acts as a reverse-proxy – all the requests travel from within the IIS Web server which is available to the outside internet, and the proccessing happens within the Kestrel.
How do you specify?
- To explicitly specify the mode we want our application to run, we provide it inside our Web project CSPROJ file. It can look something like this
<Project Sdk="Microsoft.NET.Sdk.Web"> <PropertyGroup> <TargetFramework>netcoreapp3.1</TargetFramework> <AspNetCoreHostingModel>OutOfProcess</AspNetCoreHostingModel> <AspNetCoreModuleName>AspNetCoreModule</AspNetCoreModuleName> </PropertyGroup> .... other config .... </Project>
- If we don’t specify the type of hosting model we’re into, the ASP.NET Core bundle hosts the application in an In-Process manner.