我们正在测试一个ASP.net核心应用程序,该应用程序在IIS自动使用的“反向代理”系统中运行dotnet.exe进程时崩溃,如果您已将IIS .net核心托管选项安装到您的计算机中。
一旦dotnet进程(在我们的情况下为5)崩溃,所有请求都会返回502错误,并且IIS无法通过重新启动dotnet进程来恢复。
IIS日志记录(在事件查看器中)没有任何内容表明池崩溃的原因,有时IIS管理员UI显示池已“停止”,有时它“已启动”,但在任务管理器中,所有dotnet.exe进程都已消失。
我们要分割(从我们代码的先前提交重建)直到我们隔离它,但这个问题主要是关于ISS和DotNet反向代理:
eventvwr.msc
)以外的其他地方是否可以包含IIS反向代理和dotnet.exe主机进程的相关日志记录?事件查看器中没有似乎相关的当前项目。除了我们遇到崩溃的日子之外,有几天的消息显示WAS启动并重新启动IIS池,但是当dotnet进程刚刚消失时没有消息。dotnet运行时是否存在任何已知错误导致其崩溃,IIS无法恢复并重新启动该进程?
我在IIS中看到的唯一日志记录是GET / POST请求,C:\inetpub\logs\LogFiles\...
更新:从今天开始我现在看到一些相关的事件查看器条目:
Failed to start process with commandline '"dotnet" .\MyCompany.Authorization.Api.dll', ErrorCode = '0x80004005'.
from Source: IIS AspNetCore Module
答案 0 :(得分:0)
在这种情况下,IIS本身似乎崩溃了,而不是我的应用程序池中的dotnet进程。我的证据是C:\ inetpub \ logs \ LogFiles \ W3SVC1中的日志文件显示了这一点,看起来IIS本身正在崩溃并重新启动。注意看起来像初始启动/启动日志记录的开头的“#”:
2016-08-03 13:30:09 W3SVC1 192.168.215.35 GET /api/v3/fhir/patient/311 - 80 - 192.168.215.164 HTTP/1.1 python-requests/2.10.0 - dev-html5.mycompany.biz 404 0 2 1405 1099 0
2016-08-03 13:31:19 W3SVC1 192.168.215.35 OPTIONS /api/v3/fhir/code _dc=1470231079494 80 - 192.168.225.119 HTTP/1.1 Mozilla/5.0+(Windows+NT+10.0;+Win64;+x64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/51.0.2704.103+Safari/537.36 http://localhost:8086/ dev-html5.mycompany.biz 200 0 0 206 544 109
2016-08-03 13:31:21 W3SVC1 192.168.215.35 OPTIONS /api/v3/fhir/imagingstudy/297 _dc=1470231081268 80 - 192.168.225.119 HTTP/1.1 Mozilla/5.0+(Windows+NT+10.0;+Win64;+x64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/51.0.2704.103+Safari/537.36 http://localhost:8086/ dev-html5.mycompany.biz 200 0 0 206 556 312
2016-08-03 13:31:33 W3SVC1 192.168.215.35 OPTIONS /api/v3/fhir/code _dc=1470231093098 80 - 192.168.225.119 HTTP/1.1 Mozilla/5.0+(Windows+NT+10.0;+Win64;+x64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/51.0.2704.103+Safari/537.36 http://localhost:8086/ dev-html5.mycompany.biz 200 0 0 206 544 53
2016-08-03 13:31:34 W3SVC1 192.168.215.35 OPTIONS /api/v3/fhir/imagingstudy/297 _dc=1470231094714 80 - 192.168.225.119 HTTP/1.1 Mozilla/5.0+(Windows+NT+10.0;+Win64;+x64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/51.0.2704.103+Safari/537.36 http://localhost:8086/ dev-html5.mycompany.biz 200 0 0 206 556 59
#Software: Microsoft Internet Information Services 8.5
#Version: 1.0
#Date: 2016-08-03 13:33:03
#Fields: date time s-sitename s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs-version cs(User-Agent) cs(Referer) cs-host sc-status sc-substatus sc-win32-status sc-bytes cs-bytes time-taken
2016-08-03 13:33:03 W3SVC1 192.168.215.35 GET /api/v3/fhir/organization/1 - 80 - 192.168.215.35 HTTP/1.1 Mozilla/5.0+(Windows+NT+6.3;+WOW64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/51.0.2704.103+Safari/537.36 - dev-html5.mycompany.biz 502 5 0 1627 1255 519
2016-08-03 13:33:10 W3SVC1 192.168.215.35 GET /api/v3/authorize/login username=admin&password=mycompanyx 80 - 192.168.215.164 HTTP/1.1 python-requests/2.10.0 - dev-html5.mycompany.biz 502 5 0 1627 210 520
2016-08-03 13:33:23 W3SVC1 192.168.215.35 GET /api/v3/fhir/organization/1 - 80 - 192.168.215.35 HTTP/1.1 Mozilla/5.0+(Windows+NT+6.3;+WOW64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/51.0.2704.103+Safari/537.36 - dev-html5.mycompany.biz 502 5 0 1627 1255 523
#Software: Microsoft Internet Information Services 8.5
#Version: 1.0
#Date: 2016-08-03 13:34:06
#Fields: date time s-sitename s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs-version cs(User-Agent) cs(Referer) cs-host sc-status sc-substatus sc-win32-status sc-bytes cs-bytes time-taken
2016-08-03 13:34:06 W3SVC1 192.168.215.35 OPTIONS /api/v3/fhir/linkage/patient/315 _dc=1470231246063 80 - 192.168.225.30 HTTP/1.1 Mozilla/5.0+(Windows+NT+10.0;+WOW64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/51.0.2704.103+Safari/537.36 http://localhost:8086/ dev-html5.mycompany.biz 502 5 0 1627 511 548
#Software: Microsoft Internet Information Services 8.5
#Version: 1.0
#Date: 2016-08-03 13:34:18
#Fields: date time s-sitename s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs-version cs(User-Agent) cs(Referer) cs-host sc-status sc-substatus sc-win32-status sc-bytes cs-bytes time-taken
2016-08-03 13:34:18 W3SVC1 192.168.215.35 GET /api/v3/fhir/organization/1 - 80 - 192.168.215.35 HTTP/1.1 Mozilla/5.0+(Windows+NT+6.3;+WOW64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/51.0.2704.103+Safari/537.36 - dev-html5.mycompany.biz 502 5 0 1627 1255 531
2016-08-03 13:34:41 W3SVC1 192.168.215.35 GET /api/v3/authorize/login username=admin&password=mycompanyx 80 - 192.168.215.164 HTTP/1.1 python-requests/2.10.0 - dev-html5.mycompany.biz 502 5 0 1627 210 531
2016-08-03 13:34:46 W3SVC1 192.168.215.35 OPTIONS /api/v3/fhir/code _dc=1470231282672 80 - 192.168.225.119 HTTP/1.1 Mozilla/5.0+(Windows+NT+10.0;+Win64;+x64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/51.0.2704.103+Safari/537.36 http://localhost:8086/ dev-html5.mycompany.biz 502 5 0 1627 544 777
2016-08-03 13:34:46 W3SVC1 192.168.215.35 OPTIONS /api/v3/fhir/imagingstudy/297 _dc=1470231284575 80 - 192.168.225.119 HTTP/1.1 Mozilla/5.0+(Windows+NT+10.0;+Win64;+x64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/51.0.2704.103+Safari/537.36 http://localhost:8086/ dev-html5.mycompany.biz 502 5 0 1627 556 1037
2016-08-03 13:34:57 W3SVC1 192.168.215.35 GET /api/v3/fhir/organization/1 - 80 - 192.168.215.35 HTTP/1.1 Mozilla/5.0+(Windows+NT+6.3;+WOW64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/51.0.2704.103+Safari/537.36 - dev-html5.mycompany.biz 502 5 0 1627 1221 530
2016-08-03 13:35:00 W3SVC1 192.168.215.35 OPTIONS /api/v3/fhir/code _dc=1470231299728 80 - 192.168.225.119 HTTP/1.1 Mozilla/5.0+(Windows+NT+10.0;+Win64;+x64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/51.0.2704.103+Safari/537.36 http://localhost:8086/ dev-html5.mycompany.biz 502 5 0 1627 544 527
我打算尝试建立一个可重复的测试基础,但现在这似乎与:
有关安装了dotnet IIS主机更新的Windows Server 2012 R2上的IIS以及所有最新的Windows更新。
IIS在单个应用程序池中托管多个应用程序。由于已知问题(如此),Microsoft(不推荐)在单个池中托管多个应用程序的决定可能是“不推荐”的,但是当我有更好的信息时,我会更新此答案。
当IIS崩溃时,IIS失败请求跟踪(FREB)似乎也很有用。 See this article
更新:我设置了一个Azure VM,并且能够重现并向Microsoft提供详细信息。该研究结果发布在IISIntegration Github issue 245 here.。我遇到的特定问题的解决方法是由Microsoft的某个人向我建议的,解决方法的想法是:
在部署的IIS dotnet核心应用程序中,将相对web.config的文件名更改为绝对文件名,例如从<aspNetCore processPath="dotnet" arguments=".\yourapp.dll" ... />
到<aspNetCore processPath="dotnet" arguments="c:\full\path\to\yourapp.dll" ... />
,并将代码更改为Startup.cs和Program检查环境何时发布的.cs,如果是,则始终将应用程序当前工作目录作为Web根目录,而不是提供的环境Web根目录。
在运行时,每次部署后,手动重新应用web.config更改,因为您无法修改项目中的web.config源(输入)文件,只能部署最终的二进制内容(在执行dotnet之后)发布)。