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-x64dotnet 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 StudioVisual 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网站上的安装说明)来解决此问题:

  1. KB2919355
  2. 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

固定

  1. 导航到您的项目目录并find隐藏的文件夹.vs (它位于项目文件夹目录中)。 (记得显示隐藏的文件/文件夹)

  2. closuresVS

  3. 删除.vs文件夹
  4. 以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中的项目文件夹中添加一个排除项 。 ( 在这里学习如何做到这一点 。)

这对我来说很有效,我在应用多个服务器上重复了它。