IIS无法运行ASP.NET核心站点 - HTTP错误502.5

dev*_*2go 48 asp.net-core-mvc asp.net-core

我们有一台Windows 2012 R2计算机.我有一个现有的ASP.NET核心站点,它有一个运行的已发布的ASP.NET核心站点.

但是,当我在更改后一个月后再次发布到网站时,我无法访问该网站并在浏览器中收到以下错误

HTTP错误502.5 - 进程失败

有关详细信息,请访问:http://go.microsoft.com/fwlink/?LinkID = 808681

如果我登录到服务器并单击我部署目录中的exe,它会打开一个命令提示符并在端口5000上显示我的站点.如果我在http:// localhost:5000上访问该站点,它可以正常工作,所以问题是要做与IIS而不是网站本身.

如果我登录到服务器,我可以在Windows EventViewer中看到以下内容

在此输入图像描述

具有物理根"D:\ Sites\MySite"的应用程序'MACHINE/WEBROOT/APPHOST/DEFAULT WEB SITE/MySite'无法使用命令行'"%LAUNCHER_PATH%"%LAUNCHER_ARGS%'启动进程,ErrorCode ='0x80070002:0.

当我访问浏览器错误消息中的链接时,它提到重新安装.net Core Hosting捆绑包,我做了.但是,浏览器中的错误消息是相同的.

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <handlers>
      <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
    </handlers>
    <aspNetCore requestTimeout="02:00:00" processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false" />
  </system.webServer>
</configuration>
Run Code Online (Sandbox Code Playgroud)

当我查看我的应用程序日志文件夹时,每次尝试访问此站点时都会创建一个stdout文件,但每次它的大小为0KB且为空内容时.

为什么IIS拒绝在以前工作的地方突然工作,但如果我直接访问编译的exe,应用程序是否有效?

SO *_*ood 41

你的问题是一个糟糕的web.config文件:

<aspNetCore requestTimeout="02:00:00" 
     processPath="%LAUNCHER_PATH%" 
     arguments="%LAUNCHER_ARGS%" 
     stdoutLogEnabled="true" 
     stdoutLogFile=".\logs\stdout" 
     forwardWindowsAuthToken="false" />
Run Code Online (Sandbox Code Playgroud)

路径%LAUNCHER_PATH%在您的系统上不存在,甚至无效.它应该是这样的:

<aspNetCore requestTimeout="02:00:00" 
     processPath=".\yourAppName.exe" 
     arguments="somePossibleArgument" 
     stdoutLogEnabled="true" 
     stdoutLogFile=".\logs\stdout" 
     forwardWindowsAuthToken="false" />
Run Code Online (Sandbox Code Playgroud)

请注意,如果从命令行启动应用程序,则会完全忽略web.config文件,这就是您没有收到错误的原因.


Akb*_*sha 36

我有同样的问题,我的问题是IIS无法获得dotnet的路径.我能够通过指定dotnet.exe的路径来修复它

<configuration>
  <system.webServer>
    <handlers>
      <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
    </handlers>
    <aspNetCore processPath="C:\Program Files\dotnet\dotnet.exe" arguments=".\your-project.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout"/>
  </system.webServer>
</configuration>
Run Code Online (Sandbox Code Playgroud)

  • 我有同样的问题。但是很奇怪,因为c:\ Program Files \ dotnet \部分肯定在路径环境变量中,所以本来以为会从那里获取它。怀疑可能需要重新启动,因此稍后会报告。 (2认同)
  • 就我而言,在应用程序池设置中打开负载配置文件是可行的。由于某种原因,它被设置为false,这似乎不是默认设置。 (2认同)
  • 我有同样的症状 - 但只是我没有阅读安装程序,当它说重新安装后记得重新启动 IIS 时。运行 iisreset 解决了这个问题 (2认同)

Dav*_*son 8

我的问题是由于我的appsettings.json文件中的转义序列无效,进程无法启动.

我正在使用dotnet来运行已发布的ASPNET Core 2 web api dll.通过打开命令提示符并导航到站点文件所在的目录,可以发现问题.在那里,我运行命令:

dotnet mySite.dll

(将mySite.dll更改为应用程序的主dll.此外,请确保已安装正确版本的.NET Core Windows Server Hosting包).

按回车键,它立即崩溃,在控制台窗口中显示错误的确切反馈.如果您遇到类似的麻烦,这是帮助确定启动错误的好方法.

  • 我遇到了类似的问题,这个命令帮助我解决了这个问题。 (2认同)

小智 7

问题:当我部署 asp net core web API 时,processPath 设置为 dotnet。该应用程序未启动,事件查看器显示上述错误。

解决方案:

应设置应用程序池标识以加载配置文件。

导航到:应用程序池 -> NetCore(您的池)-> 高级设置 -> 加载用户配置文件 ----> 将此设置为 true

我验证转向 false 重新创建错误并设置回 true 解决了它。


Wei*_*Guo 5

我有类似的问题。我只是按照故障排除步骤进行操作: Check the system event log for error messages并从事件查看器中找到以下内容,Application 'MACHINE/WEBROOT/APPHOST/[MyFolder]' with physical root 'C:\inetpub\wwwroot\[MyFolder]\' failed to start process with commandline 'dotnet .\MyApp.dll', ErrorCode = '0x80004005 : 80008083.

dotnet .\MyApp.dll然后我从终端重新运行并得到答案:

It was not possible to find any compatible framework version
The specified framework 'Microsoft.AspNetCore.App', version '2.1.1' was not found.
  - Check application dependencies and target a framework version installed at:
      \
  - Alternatively, install the framework version '2.1.1'.
Run Code Online (Sandbox Code Playgroud)

所以原因和jv_回答的一样,只是你没有安装兼容的框架版本。我最终使用了“独立”部署模式并且它起作用了。