IIS ARR设置错误引发HTTP 400.605 The request cannot be routed

如果网站设置ARR引发了HTTP 400.605错误代码,一般都是IIS上服务器级别的URL重写语法错误,可以通过禁用或者修改对应的URL重写规则来测试网站能否恢复正常。其实仔细查阅错误信息,不难看出问题的源头在于URL重写语法错误,导致请求不断递归相同的路由!

PS:本文需要对ARR有一定的基础和了解。
 

先贴下错误信息和截图:

HTTP 错误 400.605 – Bad Request

The request cannot be routed because it has reached the Max-Forwards limit. The server may be self-referencing itself in request routing topology.

可尝试的操作:

创建跟踪规则以跟踪此 HTTP 状态代码的失败请求。有关为失败的请求创建跟踪规则的详细信息,请单击此处。

详细错误信息:

模块 ApplicationRequestRouting

通知 MapRequestHandler

处理程序 ApplicationRequestRoutingHandler

错误代码 0x00000000

详细信息

由于语法错误,服务器无法理解此请求。

HTTP错误400.605-Bad Request 截图

ApplicationRequestRouting模块详细错误信息截图

注意上图中红框部分,再对错误信息进行分析,已经可以确定问题来源是ARR模块请求异常导致,主要是URL重写规则的语法错误,才会引发这个400.605错误。建议采用排除法,先禁用所有ARR规则,逐步排查找出有语法问题的规则。

我遇到的情况如下:有一个要进行ARR重写操作的URL,由于设置错误,原本的主机头/IP地址与重写的URL一模一样,端口也一样,结果设置后网站立即引发HTTP 400.605错误。我猜测是由于递归请求相同的路由才引发的,因为ARR是属于服务器级别的URL重写,所以一定要留意重写的URL不能与原本的URL重复(端口和IP地址特别留意)。如果需要操作相同的IP/端口/域名,直接使用网站级别的重写操作即可。

出于某些谨慎的考虑,可以在重写条件加入过滤,例如排除自身的端口号之类的,等于多加了一层保险:

过滤并排除端口

官方资料对400.605的描述是最大转发数量超出限制,其实我自己也不太明白具体的意思:

官方400.605错误说明截图

官方400.605错误说明截图-英文版

总之对于应用程序请求路由,还是有待深入研究。




原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/98913.html

(0)
上一篇 2021年8月21日
下一篇 2021年8月21日

相关推荐

发表回复

登录后才能评论