Hosting Umbraco in IIS
Information on hosting Umbraco on IIS
Last updated
Information on hosting Umbraco on IIS
Last updated
Install the .NET Core Runtime and download the Hosting Bundle. Ensure you download the correct .NET version as per the Requirements article.
Restart IIS (net stop was /y
followed by net start w3svc
)
Create a site in IIS and ensure that the .NET Common Language Runtime (CLR) version is set to No Managed Code
for the Application Pool.
You can use the dotnet CLI to compile and collate all files required for hosting
Alternatively, you can use the File Transfer Protocol (FTP) publishing in Visual Studio to compile and collate all the required files for the application to run.
In Visual Studio, select the Umbraco web project in the Solution Explorer and choose the Publish... command.
Deploy a website for automated deployment with Azure DevOps to IIS
You can use the IIS Release task in Azure DevOps to deploy your website to your Web Server. This task is a wrapper for MSDeploy.exe
and can be configured as preferred.
In the Management section you find the Configuration Editor:
One section is of particular interest:
In the first, left hand dropdown list (Section:) choose: system.webServer/aspNetCore
section.
In the second, right hand dropdown list (From:) choose: ApplicationHost.config <location path='[YOUR-SITENAME]'>
. This ensures your settings will be stored in a machine specific file. The configuration files might end in a public repository and should not contain sensitive data like Connection Strings or Simple Mail Transfer Protocol (SMTP) configuration with username and password. Additionally, by default the configuration file will be overwritten during each publish processes.
Find the line named environmentVariables and open the dialog to add environment variables. These work similar to the launchSettings. You can define ASPNETCORE_ENVIRONMENT
and create an appSettings.[ASPNETCORE_ENVIRONMENT].json
file. Or even better create environment variables for sensitive settings like passwords. There are some differences to launchSettings.json
configuration:
Variable names need to change the object structure form JSON by combining the segments with double underscore __
e.g. ConnectionStrings__umbracoDbDSN
Escaped backslashes \\
e.g. serverName\\databaseInstanceName
are replaced by single backslash \
e.g. DATABASESERVER123\SQL2017
IIS can host .NET applications using 2 different hosting models
In-process hosting runs a .NET app in the same process as its IIS worker process
Out-of-process - to enable this model you need to edit your .csproj file and add:
Out-of-process .NET apps run separately from the IIS worker process. The module controls the management of the Kestrel server and requests are proxied between them.