I am having trouble running my ASP.NET5 from command line under IISExpress.
My current command line setup (thanks to this answer) looks like so
iisexpress.exe /config:"[project_dir].vs\config\applicationhost.config" /site:"WebUI" /apppool:"Clr4IntegratedAppPool"
Note that running the project from within VS2015 works fine.
When I run the command above, IISExpress starts up, it even finds the correct port it should run under. The main problem is every request returns a 502.3.
Looking at the contents of IISExpress\TraceLogFiles
I see this error
ModuleName: httpPlatformHandler
Notification: EXECUTE_REQUEST_HANDLER
HttpStatus: 502
HttpReason: Bad Gateway
HttpSubStatus: 3
ErrorCode: The server is currently disabled. (0x8007053d)
What is causing this? Why can't I get this to run!?
As the earlier answer points out, Visual Studio sets %LAUNCHER_PATH% and %LAUNCHER_ARGS% environment variables when launching iisexpress. If you set these, you don't have to run dotnet publish
, however the contents of these arguments changes slightly from version to version of Visual Studio. Luckily, you can use Process Explorer to see what's in there. Quoting a good blog post on this:
So in fact Visual Studio silently adds the two environment variables when launching IIS Express, so that ASP.NET Core related bits can be injected.
LAUNCHER_ARGS: -debug -p “C:\Program Files\dotnet\dotnet.exe” -a “exec \”C:\Users\lextm\documents\visual studio 2017\Projects\WebApplication2\WebApplication2\bin\Debug\netcoreapp1.0\WebApplication2.dll\”” -pidFile “C:\Users\lextm\AppData\Local\Temp\2\tmpFD6D.tmp” -wd “C:\Users\lextm\documents\visual studio 2017\Projects\WebApplication2\WebApplication2”
LAUNCHER_PATH: C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\Extensions\Microsoft\Web Tools\ProjectSystem\VSIISExeLauncher.exe```
When I ran into this issue (I had to use iisexpress instead of just dotnet run
since I was running an application with legacy components), I set LAUNCHER_ARGS="-p C:\$XXX\$MY_PROGRAM.exe" and LAUNCHER_PATH: to the above, and launching the application worked for me. I recommend using Process Explorer to find what Visual Studio is putting in there, and using that to craft a launch command.
The applicationhost.config is likely pointing to your project's root directory, and in that directory, the default web.config file for the project has a line that looks something like the following:
<aspNetCore processPath="%LAUNCHER_PATH%"
arguments="%LAUNCHER_ARGS%"
stdoutLogEnabled="false"
stdoutLogFile=".\logs\stdout"
forwardWindowsAuthToken="false"/>
Visual Studio (and the dotnet publish
command) will replace the launcher variables during F5-startup with the actual path to the ASP.NET Core application; I'm not sure where this new web.config file is stored through.
That said, I was able to get a command-line invocation of IIS Express working for my ASP.NET Core application with the following steps.
dotnet publish
.User contributions licensed under CC BY-SA 3.0