我在IISExpress下从命令行运行ASP.NET5时遇到问题。
我当前的命令行设置(感谢this answer)看起来像是
iisexpress.exe /config:" [project_dir] .vs\config\applicationhost.config" /站点:" WebUI中" /程序池:" Clr4IntegratedAppPool"
请注意,从VS2015中运行项目可以正常工作。
当我运行上面的命令时,IISExpress启动,它甚至找到它应该运行的正确端口。主要问题是每个请求都返回502.3。
查看IISExpress\TraceLogFiles
的内容,我看到了这个错误
ModuleName:httpPlatformHandler
通知:EXECUTE_REQUEST_HANDLER
HttpStatus:502
HttpReason:Bad Gateway
HttpSubStatus:3
ErrorCode:服务器当前已被禁用。 (0x8007053d)
造成这种情况的原因是什么?为什么我不能让它运行!?
答案 0 :(得分:1)
如先前的答案所指出,Visual Studio在启动iisexpress时会设置%LAUNCHER_PATH%和%LAUNCHER_ARGS%环境变量。如果设置了这些,则不必运行dotnet publish
,但是这些参数的内容随Visual Studio版本的不同而略有不同。幸运的是,您可以使用Process Explorer查看其中的内容。在此引用一篇不错的博客文章:
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```
当我遇到这个问题时(由于我正在运行具有旧版组件的应用程序,因此我不得不使用iisexpress而不是dotnet run
),我设置了LAUNCHER_ARGS =“-p C:\ $ XXX \ $ MY_PROGRAM。 exe”和LAUNCHER_PATH:到上面,并且启动该应用程序对我有用。我建议使用Process Explorer查找Visual Studio放在其中的内容,然后使用它来编写启动命令。
答案 1 :(得分:0)
applicationhost.config可能指向项目的根目录,在该目录中,项目的默认web.config文件有一行如下所示:
<aspNetCore processPath="%LAUNCHER_PATH%"
arguments="%LAUNCHER_ARGS%"
stdoutLogEnabled="false"
stdoutLogFile=".\logs\stdout"
forwardWindowsAuthToken="false"/>
Visual Studio(以及dotnet publish
命令)将在F5启动期间将启动器变量替换为ASP.NET Core应用程序的实际路径;我不知道这个新的web.config文件存储在哪里。
也就是说,我能够通过以下步骤为我的ASP.NET Core应用程序启用IIS Express的命令行调用。
dotnet publish
。