【发布时间】:2018-12-05 16:34:34
【问题描述】:
我在使用 IIS 8.5 上托管的 ASP.Net Core Web Api 应用程序时遇到了一些困难。 IIS 8.5 为特定的发布请求返回 400 状态代码。
错误请求由托管在具有不同端口的同一域上的 Web 应用程序执行。 API 配置为处理 cors,错误请求的预检已成功完成。
我注意到一件奇怪的事情: Api 部署时包含 Swagger UI。因此,我尝试使用 Swagger UI 重现该错误。但在这种情况下,请求是成功的。 两个请求的正文和 url 完全相同,除了请求来源之外,标头没有明显差异。
看起来请求根本没有被 Api 处理(在这种情况下,我应该在我们的日志文件中看到某事),所以我很确定错误发生在 IIS 本身的某个地方。
我已经调查了 httperr.log 文件。它包含请求失败时的流水线:
2018-12-05 15:38:36 192.168.100.132 62121 192.168.100.173 1142 HTTP/1.1 POST /api/some/request/path 400 13 BadRequest myServicePool
我希望此文件包含有关错误原因的更多详细信息。 我想知道“BadRequest”前面的“13”有什么特殊含义吗?
根据提供的信息,有没有人知道为什么会发生此错误?我真的不这么认为。但是,如果有人可以提示我在哪里搜索有关错误原因的更多详细信息,我将非常高兴。 如果您需要更多详细信息,请告诉我。
【问题讨论】:
-
13 可能是 sc-win32-status (-> 日志文件中的标题)
-
或 HTTP 子状态... IIS 日志仅包含有关流量的一些基本信息,而不包含 IIS 内部发生的情况,事件日志说明正在发生什么?您还可以尝试启用失败的请求跟踪,它提供了 IIS 管道的一些全面详细信息,尤其是当您猜测 POST 未到达应用程序时。
-
HTTP 错误日志将无法为您提供更多提示。但是您可以在 Wireshark 等工具中捕获有问题的 HTTP 请求,并根据 HTTP RFC 文档分析其详细信息。请注意,在大多数情况下,这应该在字节级别完成,而不仅仅是字符串。
-
看起来13不是子状态。至少它没有在微软文档中列为可能的子状态:support.microsoft.com/de-de/help/943891/…
标签: asp.net .net .net-core iis-8