2010-12-15 81 views
1

我有一个MVC2网站,我们执行大量的集成测试。最重要的是,我们测试使用不良网址时的行为。例如:IIS7不会返回错误请求的HTTP 400

http://x.x.x.x/v1//Dy888/1/1234567815/swlocation?fv=24&sv2=3&sv3=5

(注意 “V1” 后的两条斜线)

这应该产生一个HTTP 400错误的请求,并在开发环境(VS2008)一切工作按计划进行。但是在测试环境中,IIS7或MVC2以某种方式通过这种方式来看待和响应,就好像只有一个斜线一样。它似乎太“聪明”,并通过重写请求来帮助我们。

我怎样才能配置我的服务器不是“聪明”,并真正回应正确的错误?

测试服务器是带有IIS7的Windows Server 2008。

谢谢! - 尼古拉斯

回答

1

的HTTP状态代码400被定义如下:

请求有错误的语法或是 固有不可能得到满足。

在URI(它只是整个请求的一部分)中有一个额外的正斜杠不能被正确地分类为请求的语法错误,也不会使它不可能满足请求,因为额外的正斜杠不会改变URI指向的位置。

我认为你的开发Web服务器是一个错误的行为,并且你的测试的前提是错误的。

+0

克劳斯,谢谢你的回复。但是MVC如何依靠请求的路径信息,路径是否完整无关紧要?你能澄清还是解释?谢谢! – 2010-12-15 13:23:15

+0

我假设mvc通过删除多余的正斜杠来清理url,从而保持路径不变。 Stackoverflow也使用MVC。如果您将任意数量的正斜杠添加到此问题的网址,则所有内容均正常运行。这导致我相信MVC通过简单地删除它们来处理额外的正斜杠。 – 2010-12-15 13:38:47

+0

是的,这似乎很可能,现在我正在寻找一种方法来禁用消毒...... :-)非常感谢! – 2010-12-15 14:01:06