【问题标题】:Why does Cassini treat URI:s with multiple slashes as a Bad Request?为什么 Cassini 将带有多个斜杠的 URI:s 视为错误请求?
【发布时间】:2010-12-15 17:07:23
【问题描述】:

我正在努力从我的开发网络服务器 [1] 和我的测试环境 [2] 中获得类似的行为,现在我正在研究为什么开发人员使用此 URI 返回 HTTP 400 错误请求?

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

(注意“v1”后面的两个斜杠。)

[1] VS2008 中的卡西尼 [2] 使用 IIS7 赢得 Server 2008

提前致谢! - 尼克拉斯

附言。 我从这个问题开始搜索,我被告知前面提到的 URI 根本不应该生成错误请求:

IIS7 NOT returning HTTP 400 for a bad request DS。

【问题讨论】:

  • 我不确定双斜杠在技术上在 HTTP URL 中是否合法。
  • 我也不确定,看来微软自己也不同意,看到 Cassini 和 IIS7 对规则的解释不同……

标签: c# visual-studio-2008 asp.net-mvc-2 iis-7


【解决方案1】:

您应该不要期望在 Visual Studio 内置的 ASP.NET 开发服务器和 IIS Web 服务器之间会有类似的行为。

它们通常是两个不同的 Web 服务器,具有不同的代码库和不同的功能集。即使他们应该表现得相似(他们肯定不会,例如 SSL、URL 重写规则等 Web 服务器功能),也不要期望他们这样做。

这只是 Microsoft 停止 ASP.NET 开发服务器开发并引入 IIS Express 以在同一页面上再次获得您的开发和生产 Web 服务器体验的另一个原因。

所以我给你的建议是:

  • 停止使用 ASP.NET 开发服务器
  • 开始使用IIS Express
  • 仍然不要期望它们的行为相同!
    只有运行真实 IIS 实例的测试/暂存系统才能为您提供真正的体验!

希望有帮助!

【讨论】:

  • 马丁,谢谢! IIS Express 在许多方面听起来像是一个更好的选择。我们正在将我们的开发转移到 VS 2010 中,我现在将研究在该过程中强制使用 IIS Express 而不是 Cassini。希望那时我们能得到更一致的结果。
  • 顺便说一句:我从没想过 Cassini 和 IIS 会完全一样,但我认为有一个解释 http 请求的标准,我现在已经修改了......
  • 我看不出为什么两个具有两个代码库的 Web 服务器不能以相同的方式解释与 URL 一样基本的东西。但理性的人肯定会对此持不同意见。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-11
  • 2014-05-11
  • 1970-01-01
  • 1970-01-01
  • 2021-11-16
  • 1970-01-01
相关资源
最近更新 更多