我有一个.NET Core应用程序。它在VS2017和Kestrel的本地运行。它在IIS下本地运行。但是,在服务器上,它无法以502.5 - Process Failure
消息开头。
在事件日志中,我得到更多详细信息:
具有物理根'C:... \ my-app-folder \'的应用程序'...'无法使用命令行'“dotnet”启动进程。\ MyApp.dll',ErrorCode ='0x80004005:80008083。
该应用程序的早期版本在同一台服务器上运行良好,唯一的区别是它们是使用VS2017RC(2& 3)发布的,这是第一次使用完全发布的VS2017构建。
ErrorCode = '0x80004005 : 80008083.
是什么意思?
我该如何解决?
答案 0 :(得分:36)
答案 1 :(得分:24)
错误代码:0x80004005
表示文件丢失或无法访问。
子代码:80008083
似乎是版本冲突。
此错误表示需要在服务器上安装不同版本的dotnet。
答案 2 :(得分:16)
由于VS2017 RC附带了新版本的.NET Core SDK(.NET Core 1.0.4 SDK 1.0.1),因此您还需要在服务器上更新框架。
答案 3 :(得分:16)
一个可行的解决方案是我将它添加到我在Visual Studio中的发布配置文件中:
<PublishWithAspNetCoreTargetManifest>False</PublishWithAspNetCoreTargetManifest>
我相信这将使主机使用所需的文件来运行应用程序,而不是依赖于目标清单中设置的规范,这可能是错误的(服务器上的运行时/ sdk或您的本地与这些规范冲突)
答案 4 :(得分:13)
我向Azure App Service发布了一个新的.NET Core 2.0 Web应用程序并发现此错误。
点击网站:
HTTP错误502.5 - 进程失败 此问题的常见原因:应用程序进程无法启动 应用程序进程已启动但随后停止了应用程序 进程已启动但无法侦听已配置的端口
<强>调试:强> 使用Azure Application Insights&amp;应用服务 - 高级工具(KUDU)查看工具 - 调试控制台 - 浏览 LogFiles 文件夹 eventlog.xml 有一个日志行:
应用程序&#39; MACHINE / WEBROOT / APPHOST / xxxx&#39;物理根&#39; D:\ home \ site \ wwwroot \&#39;无法使用命令行&#39; dotnet启动流程。\ WebApp.dll&#39;,ErrorCode =&#39; 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并再次从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
答案 5 :(得分:1)
我也遇到了这个问题,并以为我会发布解决方案。 我不确定这是否有意,但我不认为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站点上的目录。
然后该网站运行良好!
答案 6 :(得分:0)
我遇到了同样的问题,我的服务器上只安装了dotnet cor 2,因此通过安装此链接,您可以在其他版本的dot net core中运行代码。别忘了重启IIS。 https://download.microsoft.com/download/6/A/2/6A21C555-B042-46EA-BBB4-368AACCB3E25/DotNetCore.1.0.8_1.1.5-WindowsHosting.exe
答案 7 :(得分:0)
对我来说,我必须确保安装了最新的.Net Core Runtime和Windows Hosting Module,所有这些都可以从https://www.microsoft.com/net/download/windows获得(最新版本应该始终在这里提供)。
具体来说,我安装了:
如果您真的只在服务器上托管.Net Core应用程序,则可能不需要完整的.Net Framework 4.7.1运行时,但我安装它是为了安全。
答案 8 :(得分:0)
对于.net core 2.0
dotnet abcd.dll
这是一个预控件,您可以在安装WindowsHosting之后检查... 答案 9 :(得分:0)
要解决此错误,我要做的就是重新启动开发计算机并重新编译并重新发布该站点。 VS没有正确响应。
答案 10 :(得分:0)
我在IIS上运行,并且出现错误0x80004005:0,该错误在事件查看器->应用程序日志中找到。这是由于我的应用程序池无权访问网站文件夹位置而引起的。
我通过将应用程序池标识更改为可以访问该文件夹的标识来解决此问题。
答案 11 :(得分:0)
我发现您必须安装与VS2017中编译的主机版本完全相同的主机版本。更高版本不向后兼容(至少我尝试过没有)。因此,例如2.2.8将不会运行2.2.1版本,即使您希望进行较小的修订也是如此。