asp.net - 在 IIS7.5 中,什么模块删除了 400 Bad Request 的主体

标签 asp.net http iis-7.5 httpresponse

如果发布到服务器的数据有效,我已经编写了将 Response.StatusCode 设置为 400 的 ASP.NET (4.0) 代码。
我以请求接受 header 要求的格式将有用的信息放在响应正文中。例如,一条 html 消息说“需要日期字段...”。

在 Windows 7 上的 IIS7 (7.5.7600) 中,我将正确的 html 响应返回给浏览器。

在 Windows 2008 上的 IIS7 (7.5.6000) 中,我没有返回 html 正文,而只有内容为“错误请求”的文本正文。

谁能告诉我如何更改 2008 服务器的配置以返回正文。
或者这些版本的 IIS 之间有区别吗?
也许是 Machine.config 中的一个模块?
例如,我知道(并且不得不解决)FormsAuthentication 模块将 401 更改为 302,即使您不希望这样做。可能有一个模块会停止发送 400 的内容。

TIA。

最佳答案

解决方案:编辑 web.config system.webServer 部分并将 httpErrors existingResponse 属性设置为“PassThrough”等修复。
即:

<system.webServer>
    ...
    <httpErrors existingResponse="PassThrough"></httpErrors>
    ...
</system.webServer>

有两件事让我想到了这个问题:

  1. 经典的 CustomErrors 行为,因为我正在将本地主机与远程服务器进行比较
  2. 第一个无法解释我的其他一些身份验证“错误”是如何完好无损地通过的

我四处搜寻并在 IIS7 上发现了这篇文章:How to Use HTTP Detailed Errors in IIS 7.0

它与我在编辑 web.config 时发现的内容不完全相关,这可能是因为我使用的是 IIS7.5,但这足以让我进入正确的社区。

**另请注意,随着 IIS 10 现在支持 HTTP2,当请求升级到 HTTP2 时不再支持包含文本的 StatusDescriptions,因此如果您以 400(错误请求)响应,这将被剥离为仅数字 400。 "HTTP/2 does not define a way to carry the version or reason phrase that is included in an HTTP/1.1 status line. "

关于asp.net - 在 IIS7.5 中,什么模块删除了 400 Bad Request 的主体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3993941/

相关文章:

javascript - 在div ASP.NET的单击事件的java脚本中调用服务器端函数

iphone - 在 iPhone 上收听传入的 HTTP 消息

http - 想远程停止http服务器

IIS 中缺少 HTTP 绑定(bind)

javascript - 如何在 Windows 7 操作系统机器上的 asp.net 中构建 Windows 8 移动应用程序?

c# - 客户端的互联网速度慢怎么会成为 asp.net 中服务器超时异常的原因?

http - 网站是否也应该是网络资源?

asp.net-mvc-3 - 为什么我的 MVC3 Intranet 站点 Windows 身份验证在发布时不起作用

asp.net - Signal-R 如何适应 IIS 激活模型?

c# - 反序列化 Json,如 { List : { [ . .. ], [ ... ] } }