1. Targets in .xproj-file
If the project started with RC1 or earlier version of .NET Core then check for correct targets. Open the .xproj
file and search for the following line
and replace it with
2. The process path in web.config
If you get 502 after starting the web then take a look into windows event viewer. One of the errors you will probably see is
Application 'MACHINE/WEBROOT/APPHOST/YOUR-APP with physical root 'C:\webapp\publish\' created process with commandline '"dotnet" WebApp.Selfhost.dll' but either crashed or did not reponse or did not listen on the given port '28236', ErrorCode = '0x800705b4'
This error means that IIS is unable to start your app using the command dotnet
. To remedy this issue open web.config
and change the processPath
from dotnet
to C:\Program Files\dotnet\dotnet.exe
.
3. When to call UseIISIntegration
If you still getting 502 then the possible cause of this error may be that the your application is listening on a different port as expected. This can happen if one of your configuration keys is Port
. In this case your web is listening on this port instead of dynamically generated port.
The configuration of the WebHostBuilder
causing the error can look as following:
var hostBuilder = new WebHostBuilder()
.UseConfiguration(myConfig) // inserts config with key "Port"
.UseIISIntegration() // uses previously inserted port "by mistake"
.UseKestrel()
.UseStartup();
To cure that just change the order of the calls because with .NET Core 1.1 the listening url when running with IIS will not been overwritten anymore.
var hostBuilder = new WebHostBuilder()
.UseIISIntegration()
.UseConfiguration(myConfig)
.UseKestrel()
.UseStartup();