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

Posted

技术标签:

【中文标题】由于 ErrorCode = \'0x80004005:80008083,.NET Core 应用程序无法在 IIS 中启动【英文标题】:.NET Core app unable to start in IIS due to ErrorCode = '0x80004005 : 80008083由于 ErrorCode = '0x80004005:80008083,.NET Core 应用程序无法在 IIS 中启动 【发布时间】:2017-03-10 08:40:10 【问题描述】:

我有一个 .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. 是什么意思?

我该如何解决?

【问题讨论】:

你更新到服务器上的.NET Core 1.0.4 SDK 1.0.1了吗? VS2017RC 是这个版本自带的。 @Set 安装成功了,干杯。 【参考方案1】:

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

【讨论】:

干杯,但它并没有给我一个堆栈跟踪 - 它甚至在进入托管代码之前就崩溃了。 你说的这个“应用服务”是什么?我在哪里可以找到它? 我遇到了这个问题,我认为这是在发布新版本的 .netstandard 时发生的,我在重新部署之前将我的 webapi 升级到它。然后,简单的“修复”是将部署模式更改为“自包含”(在 Visual Studio 的发布页面中,选择“配置”,然后在“发布”对话框中选择“设置”,并将“部署模式”设置为“自包含” 这是获得漂亮/易于理解的错误消息的最佳方式! +1 似乎只适用于 Azure 应用服务【参考方案2】:

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

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

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

【讨论】:

在哪里可以找到这些错误的参考?我有错误代码='0x80004005:e0434352。谢谢! @FunkyPeanut 恐怕我不知道 - 我没有找到任何参考资料,只是其他帖子谈论我遇到的特定版本冲突。 不幸 - 感谢您的快速回复!我能够通过使用 Kudu 在 Azure WebApp 上手动调用 dotnet 来解决我的问题。我发现一个 dll 出现问题,在用 ildasm 反编译程序集后,结果发现它以某种方式损坏了。所以我只是手动构建并替换了库,它工作了......奇怪的东西! 我正在尝试在 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/…【参考方案3】:

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

【讨论】:

其实我也有这个问题。这听起来很奇怪。我之前有一个使用 VS 2015 构建的项目,并且之前在服务器上设置过 Core SDK v1.1.1。现在,当使用新构建的项目迁移到 VS 2017 时出现错误,必须安装 v1.0.4,这很愚蠢。为什么会这样?不确定我是否正在关注正在发生的事情......【参考方案4】:

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

<PublishWithAspNetCoreTargetManifest>False</PublishWithAspNetCoreTargetManifest>

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

【讨论】:

这个答案应该被认为是正确的。不需要在服务器端更新任何内容。谢谢。 @JackRus 也许,我必须先在版本升级中对其进行测试 - 如果它有效,我会接受它作为答案。 谢谢,也帮助了我。将寻找不依赖于我的开发环境的解决方案。 在发布配置文件配置中,我将目标运行时从 Portable 更改为 win-x64 以解决此问题。这最终以 .exe 而不是指向 .dll 的 web.config 结束。【参考方案5】:

我已向 Azure 应用服务发布了一个新的 .NET Core 2.0 Web 应用并遇到此错误。

点击网站:

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

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

物理根目录为“D:\home\site\wwwroot\”的应用程序“MACHINE/WEBROOT/APPHOST/xxxx”无法使用命令行“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>

解决方案

This answer: Deleting the wwwroot folder 在 azure 中并再次从 VS 发布,对我有用尽管最初没有旧版 Core 1.1 应用程序

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

RMDIR wwwroot /S /Q

进一步测试 遵循这对测试非常有帮助,并且在遵循相同的情况下可以正常工作,然后会出现偏差,但是您需要查找错误。 https://docs.microsoft.com/en-us/aspnet/core/tutorials/publish-to-azure-webapp-using-vs

【讨论】:

我收到ErrorCode = '0x80004005 80008083 并删除wwwroot 并重新部署项目为我修复了它。谢谢! 是的,我在wwwroot 中有一些旧东西,新部署没有清除这些东西。删除文件夹并重新部署就像一个魅力 我收到相同的错误代码,但通过 Windows Server 2012 进行部署【参考方案6】:

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

我创建并发布了一个名为“Mikes App”的项目,当尝试使用 IIS 运行该站点时,我会收到此错误(.NET Core 应用程序无法在 IIS 中启动,因为 ErrorCode = '0x80004005')。当我通过 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 站点上的目录。

然后网站运行良好!

【讨论】:

【参考方案7】:

我遇到了同样的问题,我的服务器上只安装了 dotnet cor 2,因此通过安装此链接,您可以在其他版本的 dotnet core 中运行您的代码。不要忘记重新启动 IIS。 https://download.microsoft.com/download/6/A/2/6A21C555-B042-46EA-BBB4-368AACCB3E25/DotNetCore.1.0.8_1.1.5-WindowsHosting.exe

【讨论】:

【参考方案8】:

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

具体来说,我安装了:

.Net Core 运行时 - https://www.microsoft.com/net/download/thank-you/dotnet-runtime-2.0.5-windows-x64-installer Windows Server 托管运行时 - https://www.microsoft.com/net/download/thank-you/dotnet-runtime-2.0.5-windows-windows-server-hosting-installer .Net Framework 4.7.1 运行时 - https://www.microsoft.com/net/download/thank-you/net471

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

【讨论】:

【参考方案9】:

对于.net core 2.0

    检查是否安装了相应的 DotNetCore.2.0.Y-WindowsHosting。如果您的项目是 2.1,则安装 2.1。相应地) 安装 Windows 主机后“需要”重新启动计算机。 打开电源外壳; cd 安装目录; dotnet abcd.dll 这是安装 WindowsHosting 后可以检查的预控制...

【讨论】:

【参考方案10】:

修复这个错误我所要做的就是重新启动我的开发计算机并重新编译并重新发布该站点。 VS 没有正确响应。

【讨论】:

好的,我再次收到此错误,这次我需要做的就是从 .csproj 文件中删除以下内容:【参考方案11】:

我在 IIS 上运行,我在事件查看器 -> 应用程序日志中发现了错误 0x80004005 : 0。这是因为我的应用程序池无权访问网站文件夹位置造成的。

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

【讨论】:

【参考方案12】:

我发现您必须安装与您在 VS2017 中编译的版本完全相同的托管版本。以后的版本不向后兼容(至少我尝试过的都没有)。因此,例如,2.2.8 不会运行 2.2.1 版本,即使您希望进行次要修订也会这样做。

【讨论】:

【参考方案13】:

如果你得到了

Failed to start application '/LM/W3SVC/2/ROOT/ControllerName', ErrorCode '0x80004005'. Process Id: 29720. File Version: 16.0.21269.0. Description: IIS ASP.NET Core Module V2.

在 Visual Studio 2019 或其他版本中运行应用时出错。

解决方案

您需要关闭 VS 项目并删除位于项目文件夹中的 .vs 隐藏文件夹并重新启动您的 VS 项目。

您必须在 Windows 资源管理器中启用 隐藏项目 选项,以便查看隐藏的 .vs 文件夹。

【讨论】:

以上是关于由于 ErrorCode = '0x80004005:80008083,.NET Core 应用程序无法在 IIS 中启动的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio 2017工程在Visual Studio 2019打开碰到的问题

Visual Studio 2017工程在Visual Studio 2019打开碰到的问题

Windows 7:无法注册 DLL - 错误代码:0X80004005

DB2,原因:密码已到期。 ERRORCODE=-4214, SQLSTATE=28000

错误代码 0x80070021 HTTP 错误 500.19 - 内部服务器错误

错误0x80070422:无法启动服务器,原因肯能是已被禁用或与其相关联的设备没有启动