我们试图找出为什么对特定端点(http或https(的后台请求永远不会到达IIS。IIS 日志显示来自我们设备的其他请求,但没有来自后台请求的任何请求。它们确实显示在HTTP.SYS日志中,但没有错误代码,只是一个"Request_Cancelled">
在测试中的不同环境中,这些请求确实按预期工作。因此,唯一的区别似乎是防火墙设置或我们尚未发现的内容。
在搜索了可能的原因后,我看到了有关可能无效的SSL证书的信息。我们目前没有在遇到问题的地方使用 https,并且在测试中我们已经成功地尝试了这两种方法。另一个可能的原因可能是延迟,因此我们尝试为测试中的所有请求添加 10 秒的延迟,这也按预期工作。
此错误的其他原因是什么,并阻止了对 IIS 的请求?
我认为很难找到请求取消的根本原因。 您可以尝试捕获和分析 http.sys etl 日志。
如何捕获 http.sys etl 日志。
-
与管理员一起运行 CMD.EXE
-
使用 CD C:\etl 查找要放置 ETL 日志的文件夹
-
Runlogman start httptrace -p Microsoft-Windows-HttpService 0xFFFF -o httptrace.etl -ets
-
尝试重现问题
-
使用命令停止跟踪logman stop httptrace -ets
- 然后你应该看到一个.etl文件显示在那里
如何分析这些日志。
1.下载并安装MS网络监视器: https://www.microsoft.com/en-us/download/details.aspx?id=4865
2.使用网络监视器打开 etl 日志
3.选择右上角的解析器配置文件->网络监视器解析器->Windows
4.然后,您应该能够从IOS访问端点时发生所有事件。
由于我们找不到太多有关如何对错误进行故障排除的文档request_cancelled因此。也许分析 http.sys etl 将是一个好的开始
我刚刚在供应商提供的应用程序上遇到了类似的问题 - 其中一个 XHR 请求失败,Web 服务器刚刚放弃连接。IIS 日志记录请求成功 (200(,但 HTTPERR 日志将其报告为"Request_Cancelled"。
就我而言,这是供应商在 web.config 中应用的响应限制的结果(具体来说:configuration/system.serviceModel/behaviors/serviceBehaviors/behavior/dataContractSerializer@maxItemsInObjectGraph
- 一旦单个响应中序列化的对象数量超过此限制,请求就会被取消(,并且删除此限制允许应用程序正常工作。
虽然对于所有意外的"Request_Cancelled"情况来说,这显然不会是相同的,但可能值得检查您的 web.config 以及系统范围的 C:\Windows\System32\inetsrv\config\applicationHost.config 是否有任何限制响应大小的内容。