In general, there are two modes in which an ASP.NET Core application can run, when deployed in IIS.
In-Process model:
- 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).
Out-Of-Process model:
- 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.