相关阅读:Windows + IIS 环境部署Asp.Net Core App

1.  HTTP Error 502.5 – Process Failure

环境

Windows Server 2012, IIS 8, Asp.Net Core 2.

故障

App按正常流程发布后通过浏览器访问出现以下错误:

HTTP Error 502.5 – Process Failure

  • 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

排错

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的更多相关文章

  1. Asp.Net Core App 部署故障示例 1

    相关阅读:Windows + IIS 环境部署Asp.Net Core App 1.  HTTP Error 502.5 – Process Failure 环境 Windows Server 201 ...

  2. Windows + IIS 环境部署Asp.Net Core App

    环境:Windows Server 2012, IIS 8, Asp.Net Core 1.1. 不少人第一次在IIS中部署Asp.Net Core App的人都会遇到问题,会发现原来的部署方式无法运 ...

  3. 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 ...

  4. 在CentOS7 开发与部署 asp.net core app笔记

    原文:在CentOS7 开发与部署 asp.net core app笔记 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/lihongzhai/art ...

  5. .NET跨平台之旅:将QPS 100左右的ASP.NET Core站点部署到Linux服务器上

    今天下午我们将生产环境中一个单台服务器 QPS(每秒请求数)在100左右的 ASP.NET Core 站点部署到了 Linux 服务器上,这是我们解决了在 .NET Core 上使用 EnyimMem ...

  6. Asp.Net Core 程序部署到Linux(centos)生产环境(二):docker部署

    运行环境 照例,先亮环境:软件的话我这里假设你已经批准好了.net core 运行环境,未配置可以看我的这篇[linux(centos)搭建.net core 运行环境] 腾讯云 centos:7.2 ...

  7. 实战Asp.Net Core:部署应用

    1.前言 某一刻,你已经把 .Net Core 的程序写好了.接下来,还可以做什么呢?那就是部署了. 作为一名开发工程师,如果不会部署自己开发的应用,那么这也是不完整的.接下来,我们就来说说,如何部署 ...

  8. Asp.Net Core 程序部署到Linux(centos)生产环境(一):普通部署

    运行环境 照例,先亮底 centos:7.2 cpu:1核 2G内存 1M带宽 辅助工具:xshell xftp 搭建.net core运行环境 .net core 的运行环境我单独写了一篇,请看我的 ...

  9. Docker的asp.net core应用部署系列——docker pull 加速

    原文:Docker的asp.net core应用部署系列--docker pull 加速 版权声明:本文为博主原创文章,随意转载. https://blog.csdn.net/Michel4Liu/a ...

随机推荐

  1. 浅谈jvm

    1 .说起jvm,很多人感觉jvm离我们开发实际很远.但是,我们开发缺每时每刻都离不开jvm. a: java源码 编译后成.class字节码文件, b:根据classpath找到这个字节码文件, c ...

  2. Python入门3(赋值)

    [一:*,-1的作用] 给大家两个例子: a,b,c,d='spam' print(a) print(b) print(c) print(d) a,*b='spam' print(a) print(b ...

  3. mysql索引之三:索引使用注意规则(索引失效--存在索引但不使用索引)*

    使用索引时,有以下一些技巧和注意事项: (1)越小的数据类型通常更好:越小的数据类型通常在磁盘.内存和CPU缓存中都需要更少的空间,处理起来更快.(2)简单的数据类型更好:整型数据比起字符,处理开销更 ...

  4. Java 中类的初始化过程

    先来一张 JVM 中的内存模型 . 在Java 虚拟机原理这本书中介绍了类会被初始化的 5 种情况 . 1 遇到 new getstatic putstatic 和 invokestatic 这 4 ...

  5. [leetcode greedy]134. Gas Station

    There are N gas stations along a circular route, where the amount of gas at station i is gas[i]. You ...

  6. 深入理解yield

    yield的英文单词意思是生产,刚接触Python的时候感到非常困惑,一直没弄明白yield的用法. 只是粗略的知道yield可以用来为一个函数返回值塞数据,比如下面的例子: 1 2 3 def ad ...

  7. python opencv3 视频文件的读写

    git: https://github.com/linyi0604/Computer-Vision # coding:utf8 import cv2 """ 读取视频文件 ...

  8. touchscreem

    <触摸屏种类> 常见 电阻式触摸屏 电容式触摸屏 不常见 红外线技术触摸屏 表面声波触摸屏 适量压力传感触摸屏 <原理分析> 电阻式触摸屏 如图所示,在屏幕的上下和左右加上一个 ...

  9. 【BZOJ 2986】 莫比乌斯函数+容斥原理

    2986: Non-Squarefree Numbers Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 337  Solved: 156 Descri ...

  10. 线性表之单链表C++实现

    线性表之单链表 一.头文件:LinkedList.h //单链表是用一组任意的存储单元存放线性表的元素,这组单元可以是连续的也可以是不连续的,甚至可以是零散分布在内存中的任意位置. //单链表头文件 ...