IIS错误502.5上的ASP.NET Core 1.0
我刚刚将我的服务器(Windows 2012R2)更新为.Net Core 1.0 RTM
Windows Hosting软件包,来自以前的.Net Core 1.0 RC2
。 我的应用程序在我的电脑上工作,没有任何问题,但服务器不断显示
HTTP Error 502.5 - Process Failure Common causes of this issue: The application process failed to start The application process started but then stopped The application process started but failed to listen on the configured port
它以前使用RC2版本。 不知道会发生什么问题。
这是所有事件查看器说:
Failed to start process with the commandline 'dotnet .\MyWebApp.dll'. Error code = '0x80004005'.
最糟糕的部分是应用程序日志是空的! 我的意思是那些stdout_xxxxxxxxx.log文件是完全空的,都有0字节的大小。
我该怎么办?? 如何知道错误的原因,当它没有被logging?
我有同样的问题,在我的情况下,它是我的应用程序池的用户身份不足的权限, 发布到 asp.net文档的IIS页面,这个错误列出了一些原因:
- 如果您发布了自包含的应用程序,请确认您没有在
project.json
buildOptions
中设置与发布RID冲突的平台。 例如,不要指定x86平台,并使用win81-x64的RID进行dotnet publish -c Release -r win81-x64
(dotnet publish -c Release -r win81-x64
)。 该项目将发布没有警告或错误,但在服务器上的上述loggingexception失败。 - 检查web.config中的
<aspNetCore>
元素上的processPath
属性,以确认它是用于便携式应用程序的dotnet
还是用于自包含应用程序的。\ my_application.exe。 - 对于便携式应用程序,可能无法通过PATH设置访问
dotnet.exe
。 确认系统path设置中存在C:\Program Files\dotnet\
。 - 对于便携式应用程序,
dotnet.exe
可能无法访问应用程序池的用户标识。 确认AppPool用户身份有权访问C:\Program Files\dotnet
目录。 - 通过调用应用程序的
WebHostBuilder()
的.UseIISIntegration()
方法,确认您已经正确引用了IIS集成中间件。 - 如果在使用Kestrel自托pipe时使用
.UseUrls()
扩展方法,请确认它位于.UseIISIntegration()
的.UseIISIntegration()
扩展方法之前。.UseIISIntegration()
必须在运行Kestrel后面的IIS时设置反向代理的Url
,并且没有被.UseUrls()
覆盖的值。
在我的情况下,这是第四个原因,我通过右键单击我的应用程序池进行了更改,在Process Model下的高级设置中,我将Identity设置为具有足够权限的用户:
我能够通过运行来修复它
C:\ fullpath \ dotnet C:\ fullpath \ PROJECT.dll
在命令提示符下,这给了我一个更有意义的错误:
“检查应用程序的依赖关系,并确定安装在C:\ Program Files \ dotnet \ shared \ Microsoft.NETCore.App中的框架版本” – “Microsoft.NETCore.App”安装以下版本:1.0.0 – 或者,安装框架版本“1.0.1”。
如您所见,我的服务器上安装了错误的NET Core版本。 卸载以前的版本1.0.0并安装正确的版本1.0.1后,我能够运行我的应用程序。
我得到这个工作与IIS的硬重置(我只有刚刚安装的托pipe软件包)。
原来,只是在IISpipe理器中按“重新启动”是不够的。 我只需打开一个命令提示符并input'iisreset'
所以我得到了一个新的服务器,这次是Windows 2008R2和我的应用程序工作正常。
我不能确定旧服务器的问题,但我有一个想法。
所以,因为我之前编译的应用程序没有任何平台,它给了我的dll
版本,只有当目标主机安装了.Net Core Windows Hosting
软件包才有效。 在我的情况下,它被安装,这很好 。
应用程序无法正常工作后,我决定将其编译为一个以win7-x64
作为运行时的控制台应用程序。 这一次我在服务器上运行我的应用程序的exe
,它崩溃了一个有关缺lessdll的错误:
The program can't start because api-ms-win-crt-runtime-l1-1-0.dll is missing
该DLL来自通用C运行时,包含在Visual Studio的Visual C ++可再分发版2015中 。
我试图安装该包(x64和x86),但每次都失败(不知道为什么)在Windows Server 2012 R2上。
但是当我尝试将它们安装在新服务器Windows Server 2008 R2中时,它们已成功安装。 这可能是背后的原因,但仍然无法肯定。
发布Web应用程序时遇到同样的问题。 如果有人仍然有这个问题,修改{AppName} .runtimeconfig.json
{ "runtimeOptions": { "framework": { "name": "Microsoft.NETCore.App", "version": "1.1.2" }, "configProperties": { "System.GC.Server": true } } }
从“版本”更改版本:“1.1.2”到“版本”:“1.1.1” ,每一个工作都正常
当我将我的开发机器更新到Core 1.0.1时,我遇到了同样的问题,但忘记更新服务器。
有同样的问题,所有的解决scheme都不起作用。 发现这个gem,并认为我会传递,如果它帮助别人。 安装Server 2012 R2获取DLL丢失错误,尝试重新安装VS C ++ 2015,并得到一个错误。 解决方法是执行以下操作:
似乎文件C:\ProgramData\Package Cache\...\packages\Patch\x64\Windows8.1-KB2999226-x64.msu
有安装问题。 打开pipe理命令提示符:
c: mkdir tmp mkdir tmp\tmp move "C:\ProgramData\Package Cache\...\packages\Patch\x64\Windows8.1-KB2999226-x64.msu" c:\tmp expand -F:* c:\tmp\Windows8.1-KB2999226-x64.msu c:\tmp\tmp dism /online /add-package /packagepath:c:\tmp\tmp\Windows8.1-KB2999226-x64.cab
注:用正确的文件夹名称replace“…”。 之后重新安装VS C ++ 2015包。
我有一个类似的问题,引用福尔摩斯的话:“ 当你消除了不可能的事情时,不pipe不可能的事情是不是真的?
我检查了我的目标.NET框架是否安装在服务器上,事实certificate它不是。 我安装了4.6.2 .NET Framework,它工作。
我有同样的问题。 我将应用程序池标识更改为networking服务帐户。 然后我在web.config中明确地设置了dotnet.exe的path,以使应用程序正常工作@danielyewright在他的github评论中说。 它设置path后工作。
谢谢
在我的情况下分享这个错误是因为我忘了更新project.json :
"buildOptions": { "emitEntryPoint": true }
我有同样的错误问题,与VSG24在提出的答案中描述相同的问题 – 在CMD中键入“dotnet”时,令人讨厌的错误信息:
程序无法启动,因为api-ms-win-crt-runtime-l1-1-0.dll丢失
我通过在Windows Server 2012 R2上手动安装以下2个更新(以及所有其他更新链接 – 请仔细阅读Microsoft网站上的安装说明)来解决此问题:
- KB2919355
- KB2999226
希望这有助于某人。
当我尝试发布我的Web应用程序的debugging版本时,我面临同样的问题。 这组文件不包含具有属性processPath
的正确值的文件web.config
。
我从Release版本中获取这个文件,值被分配到我的exe文件的path。
<aspNetCore processPath=".\My.Web.App.exe" ... />
我也有这个问题(错误发生在VS 15和17)。 但是,在VS15上,它返回一个CONNECTION_REFUSED
错误,在VS17上它返回ASP.NET Core 1.0 on IIS error 502.5
502.5上的ASP.NET Core 1.0 on IIS error 502.5
。
固定
-
导航到您的项目目录并find隐藏的文件夹
.vs
(它位于项目文件夹目录中)。 (记得显示隐藏的文件/文件夹) -
closuresVS
- 删除.vs文件夹
- 以pipe理员身份启动VS(.vs文件夹将由VS重新创build)
在我的情况是在服务器上安装的Net Core版本的问题。 我只是安装在我的开发机器相同的版本,一切都OK 🙂
我的VS项目被自动升级到.NET Core 1.1.2后,我的生产服务器上出现了这个问题。
我只需从我的生产服务器上从这里安装1.1.2 .net核心运行时: https : //www.microsoft.com/net/download/core#/runtime
这是我想到的,最近在安装更新之后发生在Windows 10上。 从我收集的信息中,安装了一个Windows Defender更新,它假定我的“Project.dll”(一个asp.net核心项目)的行为像病毒一样,因此被删除。
所以,我build议你在开始安装/卸载东西之前要做的第一件事情就是检查确认你的“Project.dll”应该在哪里。
如果它不在那里,则将其复制回该位置。
如果您在复制文件时遇到困难,请在Windows Defender中的项目文件夹中添加一个排除项 。 ( 在这里学习如何做到这一点 。)
这对我来说很有效,我在应用多个服务器上重复了它。
- 如何从控制器返回特定的状态码和内容?
- 我如何让红帽网页服务器收听非本地主机的请求?
- 如何获取部署在Azure网站上的ASP.NET 5应用程序的错误详细信息?
- 如何在ConfigureServices中获得开发/暂存/生产托pipe环境
- 在开发人员命令提示符下找不到VS2015中的dnx命令
- 使用ASP.NET Core Web应用程序(.NET Core)与net461设置为唯一框架并使用(.NET Framework)模板之间的区别
- 在ASP.NET Core中将Razor View渲染为string
- 在.NET Core RC2中生成.exe文件
- 什么是Kestrel(vs IIS / Express)