从 iOS 设备获取 %windir%\System32\LogFiles\HTTPERR 中的'Request_Cancelled'



我们试图找出为什么对特定端点(http或https(的后台请求永远不会到达IIS。IIS 日志显示来自我们设备的其他请求,但没有来自后台请求的任何请求。它们确实显示在HTTP.SYS日志中,但没有错误代码,只是一个"Request_Cancelled">

在测试中的不同环境中,这些请求确实按预期工作。因此,唯一的区别似乎是防火墙设置或我们尚未发现的内容。

在搜索了可能的原因后,我看到了有关可能无效的SSL证书的信息。我们目前没有在遇到问题的地方使用 https,并且在测试中我们已经成功地尝试了这两种方法。另一个可能的原因可能是延迟,因此我们尝试为测试中的所有请求添加 10 秒的延迟,这也按预期工作。

此错误的其他原因是什么,并阻止了对 IIS 的请求?

我认为很难找到请求取消的根本原因。 您可以尝试捕获和分析 http.sys etl 日志。

如何捕获 http.sys etl 日志。

  1. 与管理员一起运行 CMD.EXE

  2. 使用 CD C:\etl 查找要放置 ETL 日志的文件夹

  3. Runlogman start httptrace -p Microsoft-Windows-HttpService 0xFFFF -o httptrace.etl -ets

  4. 尝试重现问题

  5. 使用命令停止跟踪logman stop httptrace -ets

  6. 然后你应该看到一个.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 是否有任何限制响应大小的内容。

相关内容

  • 没有找到相关文章

最新更新