0

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

在不同的测试环境下,这些请求确实按预期工作。所以唯一的区别似乎是防火墙设置或者我们还没有找到的东西。

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

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

4

2 回答 2

2

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

如何捕获 http.sys etl 日志。

  1. 以管理员身份运行 CMD.EXE

  2. 使用 cd c:\etl 找到要放置 etl 日志的文件夹

  3. 运行logman 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 会是一个好的开始

于 2019-09-26T03:24:16.283 回答
0

我刚刚在供应商提供的应用程序中遇到了类似的问题——其中一个 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对于任何限制响应大小的东西。

于 2021-10-05T10:11:17.010 回答