Asp.Net Core App 部署故障示例 2
1. HTTP Error 502.5 – Process Failure
环境
Windows Server 2012, IIS 8, Asp.Net Core 2.
故障
App按正常流程发布后通过浏览器访问出现以下错误:
|
HTTP Error 502.5 – Process Failure
|

排错
1. 首先查看服务器上日志
可以看到系统捕捉到两个错误,其中 IIS AspNetCore Module错误详细信息为:
Application 'MACHINE/WEBROOT/APPHOST/SUGARRUSH.AUTH.WEB' with physical root 'C:\WebSites\WebApplication1\' failed to start process with commandline 'dotnet .\WebApplication1.dll', ErrorCode = '0x80004005 : ff.
此信息与示例1的错误很相似,都是在执行 dotnet WebApplication1.dll 时出错了。
2. 接下来通过命令行工具检查一下

竟然没有出错!http://localhost:5000能够正常访问。这说明服务器中的.Net Core环境应该没有问题,问题可能出在IIS映射到App的某个环节上。
3. 考虑到映射过程中最容易发生错误的就是路径问题,因此回顾了一下代码,Startup.cs中只有一个地方涉及到本地文件路径:
new X509Certificate2(@"c:\ca\cert.pfx", "")
仔细检查了文件路径以及cert.pfx的读取权限(Everyone 完全控制),均没有发现问题。
4. 注释改行代码,重新部署后App就能够正常访问了。说明问题就出在文件的读取上。
解决
参考《关于 X509Certificate2 找到文件路径的问题》这篇文章,在IIS的“应用程序池-高级设置”中,将“加载用户配置文件”设置为True,问题就解决了。

小结
Asp.net Core App 在部署的时候涉及三个主要部分,IIS、Hosting Bundle及程序本身,排除故障的时候相对麻烦。示例1是Hosting Bundle版本问题,本例是IIS配置问题,但最终返回的错误信息都是HTTP Error 502.5 – Process Failure,着实不太友好~
后续
先前在执行dotnet WebApplication1.dll时并没有报错,是因为执行路径是在App的根目录:

如果是在其它路径执行,比如默认路径:

就会发生错误:

从中可以明确知道是X509Certificate2证书路径问题。
dotnet.exe执行路径不同会有不同结果,因此可以用上述方法来定位类似的路径问题。
Asp.Net Core App 部署故障示例 2的更多相关文章
- Asp.Net Core App 部署故障示例 1
相关阅读:Windows + IIS 环境部署Asp.Net Core App 1. HTTP Error 502.5 – Process Failure 环境 Windows Server 201 ...
- Windows + IIS 环境部署Asp.Net Core App
环境:Windows Server 2012, IIS 8, Asp.Net Core 1.1. 不少人第一次在IIS中部署Asp.Net Core App的人都会遇到问题,会发现原来的部署方式无法运 ...
- Windows Server 2008 R2 + IIS 环境部署Asp.Net Core App
Windows + IIS 环境部署Asp.Net Core App 环境:Windows Server 2012, IIS 8, Asp.Net Core 1.1. 不少人第一次在IIS中部署A ...
- 在CentOS7 开发与部署 asp.net core app笔记
原文:在CentOS7 开发与部署 asp.net core app笔记 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/lihongzhai/art ...
- .NET跨平台之旅:将QPS 100左右的ASP.NET Core站点部署到Linux服务器上
今天下午我们将生产环境中一个单台服务器 QPS(每秒请求数)在100左右的 ASP.NET Core 站点部署到了 Linux 服务器上,这是我们解决了在 .NET Core 上使用 EnyimMem ...
- Asp.Net Core 程序部署到Linux(centos)生产环境(二):docker部署
运行环境 照例,先亮环境:软件的话我这里假设你已经批准好了.net core 运行环境,未配置可以看我的这篇[linux(centos)搭建.net core 运行环境] 腾讯云 centos:7.2 ...
- 实战Asp.Net Core:部署应用
1.前言 某一刻,你已经把 .Net Core 的程序写好了.接下来,还可以做什么呢?那就是部署了. 作为一名开发工程师,如果不会部署自己开发的应用,那么这也是不完整的.接下来,我们就来说说,如何部署 ...
- Asp.Net Core 程序部署到Linux(centos)生产环境(一):普通部署
运行环境 照例,先亮底 centos:7.2 cpu:1核 2G内存 1M带宽 辅助工具:xshell xftp 搭建.net core运行环境 .net core 的运行环境我单独写了一篇,请看我的 ...
- Docker的asp.net core应用部署系列——docker pull 加速
原文:Docker的asp.net core应用部署系列--docker pull 加速 版权声明:本文为博主原创文章,随意转载. https://blog.csdn.net/Michel4Liu/a ...
随机推荐
- 【LOJ】 #2305. 「NOI2017」游戏
题解 枚举x所在的地图的颜色,然后2-SAT建边 如果v所在的地图刚好是不能选的,那么u这边只能选另一种颜色 否则就是u的颜色到v的颜色 v的另一种颜色到u的另一种颜色 代码 #include < ...
- linux添加桌面快捷方式
linux通过软件中心安装的程序快捷图标都放在/usr/share/applications/目录下.点选一个图标右键,选择复制到,目录选择桌面即可. 但是有一些软件自行安装后,在那个目录里没有 ...
- php匹配邮箱正则
php匹配邮箱正则 '/[a-z0-9&\-_.]+@[\w\-_]+([\w\-.]+)?\.[\w\-]+/is'
- java中int和Integer比较
java中int和Integer比较 一,类型区别 我们知道java中由两种数据类型,即基本类型和对象类型,int就是基本数据类型,而Integer是一个class,也习惯把Integer叫做int的 ...
- SpringBoot常用配置
前言:springboot集成了主流的第三方框架,但是需要使用springboot那一套配置方式.但是我这里只列举了非常非常常用的,可以看已发的几篇博客,慢慢会补充.当然官方文档里也有相应的配置,可惜 ...
- 洛谷——P2936 [USACO09JAN]全流Total Flow
题目描述 Farmer John always wants his cows to have enough water and thus has made a map of the N (1 < ...
- ARKit:增强现实技术在美团到餐业务的实践
前言 增强现实(Augmented Reality)是一种在视觉上呈现虚拟物体与现实场景结合的技术.Apple 公司在 2017 年 6 月正式推出了 ARKit,iOS 开发者可以在这个平台上使用简 ...
- insert ignore duplicate key
Insert into T1select * from T2 where NOT EXISTS (select 1 from T1 X where X.GUID=T2.GUID);
- iOS 9应用开发教程之显示编辑文本标签文本框
iOS 9应用开发教程之显示编辑文本标签文本框 ios9显示.编辑文本 在iOS,经常会看到一些文本的显示.文字就是这些不会说话的设备的嘴巴.通过这些文字,可以很清楚的指定这些设备要表达的信息.本节将 ...
- [ 原创 ] Java基础5--abstract class和interface的区别
1.含有abstract抽象修饰符的类就是抽象类.abstract 类不能创建实例对象 2.含有abstract方法的类必须定义为abstract class,abstract class类中的方法不 ...
