从 iOS 设备获取 %windir%\System32\LogFiles\HTTPERR 中的“Request_Cancelled”
Posted
技术标签:
【中文标题】从 iOS 设备获取 %windir%\\System32\\LogFiles\\HTTPERR 中的“Request_Cancelled”【英文标题】:Getting 'Request_Cancelled' in %windir%\System32\LogFiles\HTTPERR from iOS device从 iOS 设备获取 %windir%\System32\LogFiles\HTTPERR 中的“Request_Cancelled” 【发布时间】:2020-01-25 09:10:41 【问题描述】:我们正试图找出为什么对特定端点(http 或 https)的后台请求永远不会到达 IIS。 IIS 日志显示来自我们设备的其他请求,但没有来自我们的后台请求。它们确实显示在 HTTP.SYS 日志中,但没有错误代码,只是一个“Request_Cancelled”
在不同的测试环境下,这些请求会按预期工作。所以唯一的区别似乎是防火墙设置或者我们还没有找到的东西。
在搜索了可能的原因后,我看到了有关可能无效 SSL 证书的信息。我们目前不使用 https 来解决我们遇到问题的地方,并且在测试中我们已经成功地尝试了这两种方法。另一个可能的原因可能是延迟,因此我们尝试为测试中的所有请求添加 10 秒的延迟,这也按预期工作。
此错误的其他原因可能是什么,并阻止了对 IIS 的请求?
【问题讨论】:
是所有 ios 设备还是部分设备?也许更容易通过连接的设备来缩小范围,并查看设备级别是否存在需要包含的配置或安全问题。 测试设备和带电设备不同。所以值得用另一个设备检查一下是否有区别。谢谢 用相同的设备类型测试仍然有错误。我们将尝试添加跟踪捕获更多详细信息。 【参考方案1】:我认为找到请求取消的根本原因有点困难。 您可以尝试捕获和分析 http.sys etl 日志。
如何捕获 http.sys etl 日志。
以管理员身份运行 CMD.EXE
使用 cd c:\etl 找到您要放置 etl 日志的文件夹
运行logman 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.选择解析器配置文件->网络监视器解析器->右上角的窗口
4.那么你应该能够从IOS访问端点时发生的所有事件。
由于我们找不到太多关于如何解决 request_cancelled 错误的文档。也许分析 http.sys etl 会是一个好的开始
【讨论】:
【参考方案2】:我刚刚在供应商提供的应用程序中遇到了类似的问题——其中一个 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。
【讨论】:
以上是关于从 iOS 设备获取 %windir%\System32\LogFiles\HTTPERR 中的“Request_Cancelled”的主要内容,如果未能解决你的问题,请参考以下文章