Sim*_*sco 18 asp.net http httpresponse iis-7.5
我编写了ASP.NET(4.0)代码,如果发布到服务器的数据有效,则将Response.StatusCode设置为400.
我以请求接受标头要求的格式在响应正文中放置有用的信息.例如,一条html消息说"需要日期字段......".
在Windows 7上的IIS7(7.5.7600)中,我将正确的html响应返回给浏览器.
在Windows 2008上的IIS7(7.5.6000)中,我没有得到html主体,但只有一个带有"错误请求"的文本正文作为内容.
有人能指出我如何更改2008服务器的配置以返回正文.
或者这些版本的IIS之间有区别吗?
也许是Machine.config中的一个模块?
例如,我知道(并且必须解决)FormsAuthentication模块将401更改为302,即使您不想这样做.可能有一个模块停止发送400的内容.
TIA.
Sim*_*sco 36
解决方案:编辑web.config system.webServer部分并将httpErrors existingResponse属性设置为"PassThrough"和voilá固定.
即:
<system.webServer>
...
<httpErrors existingResponse="PassThrough"></httpErrors>
...
</system.webServer>
Run Code Online (Sandbox Code Playgroud)
好吧,有两件事让我想到了这个问题:
1.经典的CustomErrors行为,因为我将localhost与远程服务器进行比较
2.第一个不能解释我的其他身份验证'错误'是如何完整的
我挖了一遍,在IIS7上看到了这篇文章:如何在IIS 7.0中使用HTTP详细错误
它与我在编辑web.config时发现的内容并不完全相关.可能是因为我使用IIS7.5,但这足以让我进入正确的邻居.
**另请注意,当IIS 10现在支持HTTP2时,请求升级到HTTP2时不再支持包含文本的StatusDescriptions,因此如果您使用400(错误请求)进行响应,则只会将其剥离到数字400." HTTP/2没有定义携带HTTP/1.1状态行中包含的版本或原因短语的方法. "
mjw*_*lls 11
如果不能改变web.config,下面的内容可能会有所帮助:
Response.TrySkipIisCustomErrors = true;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4423 次 |
最近记录: |