IIS'礼貌重定向'如何影响ASP.NET MVC或其他Web框架?

时间:2010-03-25 16:26:08

标签: asp.net-mvc iis

我在http://support.microsoft.com/kb/298408中读到,IIS6.0会自动响应缺少点的URL的“礼貌重定向”(HTTP 301)。

  

当浏览器请求http://www.servername.de/SubDir等网址时,浏览器会重定向到http://www.servername.de/SubDir/。 URL的末尾包含一个尾部斜杠。

     

Internet Information Server(IIS)首先将SubDir视为应该返回给浏览器的文件。如果找不到此文件,IIS将检查是否存在具有此名称的目录。如果存在具有此名称的目录,则会向浏览器返回带有302“对象移动”响应消息的礼貌重定向。此消息还包含有关带斜杠的目录的新位置的信息。反过来,浏览器会使用尾部斜杠启动对URL的新GET请求。

这种行为如何与ASP.NET MVC这样的框架相交,ASP.NET MVC一般使用不需要或使用点的URL?

具体...... ASP.NET MVC在安装时“关闭”IIS6.0的这个功能吗?如果是这样,怎么样?

我猜这是的情况,但是在IIS中完成的请求路由会在执行重定向之前将请求发送到ASPNET。如果有人能解释,我将不胜感激。

1 个答案:

答案 0 :(得分:2)

ASP.NET MVC中的路由引擎允许您在应用程序中使用无扩展路由。您可以通过创建一个wildcard mapping来配置IIS 6.0以处理此类URL,该{{3}}会将aspnet_isapi过滤器与所有请求相关联,这意味着所有请求都会通过ASP.NET引擎进行处理。

当安装在具有IIS 6.0的服务器上时,ASP.NET MVC不会对IIS元数据库进行任何修改,这意味着无扩展路由将不起作用。

我的建议是仅在IIS 7及更高版本上使用无扩展路由,并为IIS 6.0提供一些扩展名(如.mvc)。这样可以避免使用通配符映射以及使ASP.NET引擎提供静态文件(如图像,css,javascript等)的可能性能。