我有一个.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.
是什么意思?
我如何解决它?
由于VS2017 RC附带了新版本的.NET Core SDK(.NET Core 1.0.4 SDK 1.0.1),因此您还需要更新服务器上的框架。
我必须做的就是修复此错误,重启我的开发计算机并重新编译并重新发布该站点。 VS没有正确回应。
我在IIS上运行,我遇到错误0x80004005:0,我在事件查看器 - >应用程序日志中找到了它。这是因为我的应用程序池无法访问网站文件夹位置。
我通过将应用程序池标识更改为可以访问该文件夹的标识来解决它。
错误代码:0x80004005
表示文件丢失或无法访问。
子代码:80008083
似乎是版本冲突。
此错误表示需要在服务器上安装不同版本的dotnet。
一个可行的解决方案是我在Visual Studio中将其添加到我的发布配置文件中:
<PublishWithAspNetCoreTargetManifest>False</PublishWithAspNetCoreTargetManifest>
我相信这将使主机使用所需的文件来运行应用程序,而不是依赖于目标清单中设置的规范,这可能是错误的(服务器上的运行时/ sdk或本地与这些规范冲突)。
我向Azure App Service发布了一个新的.NET Core 2.0 Web应用程序并发现了此错误。
点击网站:
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>
解
天蓝色的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
我也有这个问题,并认为我会发布我的解决方案。我不确定这是否有意,但我认为dotnet core 2不支持Project Name中的Space字符。
我创建并发布了一个名为“Mikes App”的项目,当尝试使用IIS运行该站点时,我会收到此错误(由于ErrorCode ='0x80004005',.NET Core应用程序无法在IIS中启动)。当我通过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站点上的目录。
然后网站工作正常!
我遇到了同样的问题,我的服务器上只安装了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
对我来说,我必须确保安装了最新的.Net Core Runtime和Windows Hosting Module,所有这些都可以从https://www.microsoft.com/net/download/windows获得(最新版本应该始终在这里提供)。
具体来说,我安装了:
如果您真的只在服务器上托管.Net Core应用程序,则可能不需要完整的.Net Framework 4.7.1运行时,但我安装它是为了安全。
对于.net核心2.0
dotnet abcd.dll
这是一个预控制,您可以在安装WindowsHosting后检查...