自定义httpErrors不保留BadRequest消息

时间:2018-03-13 22:27:31

标签: api iis proxy asp.net-mvc-5 url-rewriting


我有一个问题,情况如下:我有一些代理,我使用Url重写来重写RESTful api的请求。在某些情况下,api会发送带有400状态代码的响应BadRequest以及告知错误的消息。当我直接调用api时,消息将按原样返回。而我的问题是,当我调用相同的api但通过该代理我只能得到 - 400'BadRequest'。

我的代理配置网络中有一个httpErrors部分:

<httpErrors errorMode="Custom" existingResponse="Replace">
   <remove statusCode="403" />
   <remove statusCode="404" />
   <remove statusCode="500" />
   <error statusCode="403" responseMode="_path_" path="ExecuteUrl" />
   <error statusCode="404" responseMode="_path_" path="ExecuteUrl" />
   <error statusCode="500" responseMode="_path_" path="ExecuteUrl" />
</httpErrors>

我认为问题在于此自定义错误页面,但我没有在这里看到400状态代码的页面或自定义错误,但我试过,当我删除此或将existingResponse设置为

<httpErrors errorMode="Custom" existingResponse="PassThrough">

我可以通过代理看到来自api的错误请求消息 我正在使用IIS 7.5。我在某处读到了我甚至无法为400状态代码响应设置自定义页面
那么发生了什么 ?我可以用“干净”的解决方案以某种方式解决我的问题,没有任何黑客攻击吗?

我在尝试

<remove statusCode="400" />

太。
我在某处读到了将existingResponse设置为“Auto”以及关于使用标志'TrySkipIisCustomErrors'但关闭其他状态代码的每个自定义页面的“自动”响应,以及'TrySkipIisCustomErrors' - 使用此标志将需要额外的逻辑,我会为了避免,我甚至不知道这面旗帜是否能帮助我。

也许有些人有类似情况并摆脱了这个问题?

0 个答案:

没有答案