.NET Core 应用由于 ErrorCode = '0x80004005 : 80008083 无法在 IIS 中启动。

72
我有一个.NET Core应用程序。它在使用VS2017和Kestrel时可以在本地运行,在使用IIS时也可以在本地运行。然而,在服务器上启动时会显示502.5-进程失败的消息。
在事件日志中,我得到了更多的细节:
应用程序“...”物理根目录为'C:...\my-app-folder\',命令行未能启动进程,错误代码为'0x80004005:80008083'。
与之前在同一服务器上正常工作的应用程序不同的是,它们是使用VS2017RC(2&3)发布的,而这是第一次使用完全发布的VS2017构建。 ErrorCode = '0x80004005 : 80008083. 是什么意思?
我该如何解决它?

1
你是否已经在服务器上更新到 .NET Core 1.0.4 SDK 1.0.1?VS2017RC 已经内置了这个版本。 - Set
安装成功了,谢谢。 - Keith
13个回答

53

目前,有一种简单的方法可以查看实际错误。 从应用程序服务中打开控制台部分,然后尝试运行dotnet应用程序。从那里我们可以获得完整的错误消息和跟踪信息: 在这里输入图片描述


8
你所说的“app service”是什么,我应该去哪里找到它? - David van Dugteren
我遇到了一个问题,我认为是在发布新版本的 .netstandard 后,我升级了我的 WebAPI 并重新部署之前发生的。简单的“解决”方法是将部署模式更改为“自包含”(在 Visual Studio 的发布页面上,选择“配置”,然后在发布对话框上设置“部署模式”为“自包含”)。 - NeilMacMullen
2
这是获取良好/易懂错误信息的最佳方式!+1 - sebagomez
完美地解决了我的问题,清理 -> 重建 -> dotnet ./proj/.../bin/debug/MyDll.dll,它打印出了我需要知道的所有内容。我是通过在Azure上查看我的Kudu诊断控制台,即Diagnostic Console -> LogFiles/eventlog.xml来到这个线程的,错误消息就在底部。 - James Gould
2
这似乎仅适用于Azure应用服务。 - Markus
显示剩余2条评论

27

错误代码:0x80004005 表示文件丢失或无法访问。

子代码:80008083 似乎是版本冲突。

这个错误意味着服务器上需要安装不同版本的dotnet。


7
我在哪里可以找到这些错误的参考资料?我的 ErrorCode = '0x80004005 : e0434352。谢谢! - FunkyPeanut
@FunkyPeanut,恐怕我不知道 - 我没有找到任何参考资料,只是其他帖子谈论了我遇到的特定版本冲突。 - Keith
不幸的是,感谢您的快速回复!我通过在Azure WebApp上手动调用dotnet来解决了我的问题,使用了Kudu。我发现一个dll文件出了问题,经过使用ildasm反编译程序集后,发现它以某种方式被损坏了。所以我只是手动构建并替换了库,然后它就可以工作了...奇怪的事情! - FunkyPeanut
我正在尝试在Windows Server 2012上运行ASP.NET Core 1.1站点,并且遇到了这个错误。我不得不安装.NET Core运行时1.1.2来克服这个错误。我不记得我的项目中有任何1.1.2的引用,在本地虚拟机上进行测试时安装1.1.1运行时是可以的。这就是我从哪里获得1.1.2运行时的链接:https://github.com/dotnet/core/blob/master/release-notes/download-archives/1.1.2-download.md - Francis

20

由于VS2017 RC附带了新版本的.NET Core SDK(.NET Core 1.0.4 SDK 1.0.1),因此您还需要在服务器上更新框架。


4
实际上我也遇到了这个问题,听起来很奇怪。之前我用VS 2015构建了一个项目,并在服务器上设置了Core SDK v1.1.1。现在,当我把项目迁移到VS 2017时,出现了错误,不得不安装v1.0.4,感觉非常愚蠢。为什么会发生这种情况?我不确定我理解正在发生的事情... - Agat

20

我找到了一个可行的解决方案,就是我在Visual Studio中的发布配置文件中添加了以下内容:

<PublishWithAspNetCoreTargetManifest>False</PublishWithAspNetCoreTargetManifest>

我相信这将使主机使用所需的文件来运行应用程序,而不是依赖于目标清单中设置的规格,这些规格可能是错误的(无论是服务器上的运行时/ SDK 还是您本地的运行时/ SDK 与这些规格冲突)。


1
这个答案应该被接受为正确答案。不需要在服务器端更新任何内容。谢谢。 - Jack Rus
@JackRus 也许,我得先在版本升级中测试一下 - 如果它能正常工作,我会接受它作为答案。 - Keith
谢谢,这也帮助了我。我会寻找一个不依赖于我的开发环境的解决方案。 - DKMudrechenko
在发布配置文件中,我将目标运行时从Portable更改为win-x64以解决此问题。这将导致生成.exe文件而不是web.config指向.dll文件。 - Andy G

17

我将一个新的 .NET Core 2.0 Web 应用程序发布到 Azure App Service,但遇到了此错误。

访问网站:

HTTP 错误 502.5 - 进程失败 此问题的常见原因:应用程序进程未能启动 应用程序进程已启动,但随后停止了 应用程序进程已启动,但未能侦听配置的端口

调试: 使用 Azure 应用程序洞察和应用服务 - 高级工具 (KUDU) 查看工具 - 调试控制台 - 浏览 LogFiles 文件夹中的eventlog.xml,其中有一条日志记录:

应用程序 'MACHINE/WEBROOT/APPHOST/xxxx',物理根为 'D:\home\site\wwwroot\',启动命令行 'dotnet .\WebApp.dll' 的进程启动失败,错误代码为 '0x80004005 : 8000808c。

<Provider Name="IIS AspNetCore Module"/>
<EventID>1000</EventID>
<Level>1</Level>
<Task>0</Task>
<EventData>
<Data>Application 'MACHINE/WEBROOT/APPHOST/xxxx' with physical root 'D:\home\site\wwwroot\' failed to start process with commandline 'dotnet .\WebApp.dll', ErrorCode = '0x80004005 : 8000808c.</Data>
</EventData>
</Event>

解决方案

此答案:删除Azure中的wwwroot文件夹,然后从VS重新发布,即使最初没有遗留的Core 1.1应用程序也适用于我。

在应用程序中启动Azure控制台,然后删除wwwroot文件夹的内容,然后重新部署。

RMDIR wwwroot /S /Q

进一步测试 按照这个很有帮助的教程进行操作并且在完全相同的情况下运行成功,然后你可以根据需要进行调整以查找错误。 https://learn.microsoft.com/en-us/aspnet/core/tutorials/publish-to-azure-webapp-using-vs


我遇到了 ErrorCode = '0x80004005 80008083 的问题,删除 wwwroot 并重新部署项目解决了这个问题。谢谢! - neilsimp1
是的,我在wwwroot中有一些旧的东西,这些东西没有被新的部署清除。删除文件夹并重新部署就像魔法般地解决了问题。 - Mikolaj Kieres
我得到了相同的错误代码,但是通过Windows Server 2012部署。 - IEnjoyEatingVegetables

3
我也遇到了这个问题,我想分享一下我的解决方法。我不确定这是否是有意为之,但我认为dotnet core 2不支持您项目名称中的空格符。

我创建并发布了一个名为"Mikes App"的项目,在尝试使用IIS运行该网站时,我会收到此错误消息(.NET Core应用程序无法启动,因为ErrorCode = '0x80004005')。当我通过web.config文件启用了stdoutLogs后,我发现了错误:

未找到与命令"dotnet-.\Mikes"匹配的可执行文件

我觉得很奇怪,因为web.config文件确实在参数下显示了dll路径,即".\Mikes App.dll"

<aspNetCore processPath="dotnet" arguments=".\Mikes App.dll" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" />

我在Visual Studio中创建了一个新的dotnet core 2项目,并将其命名为"Mikes-App",然后重新发布它并更新了IIS站点上的目录。
然后,该站点工作正常!

0

我发现你必须安装与你在VS2017中编译的版本完全相同的托管版本。较新的版本不向后兼容(至少我尝试过的没有)。因此,例如2.2.8无法运行2.2.1版本,即使你期望一个小修订版本可以这样做。


0
我所需要做的就是重新启动我的开发电脑,然后重新编译和发布网站,这样就可以解决这个错误了。VS没有正确响应。

好的,我又遇到了这个错误,这次我只需要从.csproj文件中删除以下内容即可: <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="2.1.8" /> - Roger D.

0

我正在运行IIS,并且遇到了错误0x80004005:0,我在事件查看器 -> 应用程序日志中找到了这个错误。这是由于我的应用程序池没有访问网站文件夹位置所导致的。

我通过将应用程序池标识更改为具有访问该文件夹权限的标识来解决了这个问题。


0

针对 .net core 2.0

  1. 检查是否已安装适当的 DotNetCore.2.0.Y-WindowsHosting。如果您的项目是2.1,则相应地安装2.1。
  2. 在安装WindowsHosting后,“需要”计算机重新启动。
  3. 打开powershell;cd installation_directory; dotnet abcd.dll 这是您可以在安装WindowsHosting后检查的预控制...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接