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


67

我有一个.NET Core应用程序。它与VS2017和Kestrel在本地运行。它在IIS下本地运行。但是,在服务器上,它无法以502.5 - Process Failure消息开头。

在事件日志中,我得到了更多详细信息:

具有物理根目录'C:... \ my-app-folder \'的应用程序'...'无法使用命令行'“ dotnet”。\ MyApp.dll'启动进程,错误代码='0x80004005:80008083。

先前版本的应用程序可以在同一服务器上正常工作,唯一的区别是它们是与VS2017RC(2&3)一起发布的,这是完全发布的VS2017的第一个版本。

什么ErrorCode = '0x80004005 : 80008083.意思

我如何解决它?


1
您是否已更新到服务器上的.NET Core 1.0.4 SDK 1.0.1?VS2017RC随附此版本。

@Set安装有效,欢呼。
基思(Keith)

Answers:


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

50

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


干杯,但它还没有给我提供堆栈跟踪信息-它甚至在进入托管代码之前就已经崩溃了。
基思

7
您所说的“应用服务”是什么,我在哪里可以找到它?
David van Dugteren '18年

我有这个问题,我认为是在发布新版本的.netstandard并在重新部署之前将我的webapi升级到它时发生的。然后,简单的“修复”就是将部署模式更改为“自包含”(在Visual Studio的发布页面中,选择“配置”,然后在“发布”对话框上选择“设置”,然后将“部署模式”设置为“自包含”
NeilMacMullen

2
这是获得良好/可理解的错误消息的最佳方法!+1
sebagomez

1
似乎仅适用于Azure应用服务
Markus,

26

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

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

此错误表示服务器上需要安装其他版本的dotnet。


6
在哪里可以找到这些错误的参考?我有ErrorCode ='0x80004005:e0434352。谢谢!
FunkyPeanut

@FunkyPeanut恐怕我不知道-我没有找到任何关于它们的参考,只是其他帖子在谈论我遇到的特定版本冲突。
基思

不幸-感谢您的快速回复!通过使用Kudu在Azure WebApp上手动调用dotnet,我能够解决我的问题。我发现一个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运行时的地方: github.com/dotnet/core/blob/master/release-notes/…–
Francis

18

对我有用的可能解决方案是将其添加到Visual Studio中的发布配置文件中:

<PublishWithAspNetCoreTargetManifest>False</PublishWithAspNetCoreTargetManifest>

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


此答案应被视为正确答案。不需要在服务器端更新任何内容。谢谢。
杰克·罗斯

@JackRus也许,我必须先在版本升级中对其进行测试-如果它可以工作,我会接受它作为答案。
基思

谢谢,也帮助了我。将寻找不依赖于我的开发环境的解决方案。
DKMudrechenko '18年

在“发布”配置文件配置中,我将“目标运行时”从“可移植”更改为win-x64,以解决此问题。最终以.exe而不是指向.dll的web.config结束。
安迪G

15

我已将新的.NET Core 2.0 Web应用发布到Azure App Service,并遇到此错误。

到达网站:

HTTP错误502.5-进程失败 导致此问题的常见原因:应用程序进程无法启动应用程序进程已启动但随后已停止应用程序进程已启动但无法在配置的端口上进行侦听

调试: 使用Azure Application Insights和App Service-高级工具(KUDU)查看工具-调试控制台-浏览LogFiles文件夹eventlog.xml有一个日志行:

具有物理根目录'D:\ home \ site \ wwwroot \'的应用程序'MACHINE / WEBROOT / APPHOST / xxxx'无法使用命令行'dotnet。\ WebApp.dll'启动进程,ErrorCode ='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>

这个答案:尽管最初没有旧版Core 1.1应用程序,但是以天蓝色的方式删除wwwroot文件夹并从VS重新发布,这对我还是有用的

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

RMDIR wwwroot /S /Q

进一步的测试 接下来的测试对于测试非常有帮助,并且在完全相同的情况下也可以正常工作,但是如果您发现错误,则会有所偏离。 https://docs.microsoft.com/zh-cn/aspnet/core/tutorials/publish-to-azure-webapp-using-vs


我正在获取ErrorCode = '0x80004005 80008083并删除wwwroot和重新部署该项目,这对我来说是固定的。谢谢!
neilsimp1

是的,我的中有一些旧内容,wwwroot新部署并未清除这些旧内容。删除文件夹并重新部署就像一个魅力
Mikolaj Kieres '18

我收到相同的错误代码,但通过Windows Server 2012进行部署
IEnjoyEatingVegetables

3

我也有这个问题,以为我会发布解决方案。我不确定这是否有意,但我不认为dotnet core 2在您的项目名称中支持空格字符。

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

找不到与命令“ dotnet-。\ Mikes”匹配的可执行文件

我发现这很奇怪,因为web.config文件确实在参数“。\ Mikes App.dll”下正确显示了dll路径。

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

我在Visual Studio中创建了一个新的dotnet core 2项目,并将其命名为“ Mikes-App”,重新发布它并更新了IIS站点上的目录。

然后该网站运行良好!



0

对我来说,我必须确保已安装最新的.Net Core Runtime和Windows主机模块,所有这些都可以从https://www.microsoft.com/net/download/windows获得(最新版本应始终在此处提供) )。

具体来说,我安装了:

如果您确实只在服务器上托管.Net Core应用程序,则可能不需要完整的.Net Framework 4.7.1运行时,但是为了安全起见,我安装了它。


0

对于.net Core 2.0

  1. 检查是否安装了适当的DotNetCore.2.0.Y-WindowsHosting。如果您的项目是2.1,则安装2.1。相应地)
  2. 安装Windows托管后,“需要”重新启动计算机。
  3. 打开Powershell;cd安装目录; dotnet abcd.dll这是一个预控件,您可以在安装WindowsHosting后检查...

0

解决该错误所需要做的就是重新启动开发计算机,然后重新编译并重新发布该站点。VS没有正确响应。


OK,我再次遇到此错误,这一次,我需要做的就是从.csproj文件中删除以下内容:<PackageReference Include =“ Microsoft.EntityFrameworkCore.SqlServer” Version =“ 2.1.8” />
RogerD。

0

我在IIS上运行,并且出现错误0x80004005:0,该错误在事件查看器->应用程序日志中找到。原因是我的应用程序池无权访问网站文件夹位置。

我通过将应用程序池标识更改为可以访问该文件夹的标识来解决了该问题。


0

我发现您必须安装与VS2017中编译的托管版本完全相同的托管版本。更高版本不向后兼容(至少我尝试过没有)。因此,例如2.2.8将不会运行2.2.1版本,即使您希望进行较小的修订也是如此。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.