ASP.NET v4无扩展URL功能在IIS 6.0上不起作用

时间:2012-07-04 08:49:55

标签: asp.net .net asp.net-mvc asp.net-mvc-3 iis-6

为避免静态请求影响性能,我想使用ASP.NET v4.0无扩展URL功能,但它不起作用。

我的环境:

  1. Windows服务器sp2和IIS6
  2. asp.net MVC 3 with .net 4
  3. 该站点配置为ASP.NET 4.0,没有虚拟文件夹
  4. no isapi rewriting
  5. 我要求网址为“http://domain.com/home/”,然后获取“/home/eurl.axd/f7e1f50533b94f47869a8856c16dffdf/”404错误。

    错误消息显示:Microsoft .NET Framework版本:4.0.30319; ASP.NET版本:4.0.30319.1

    似乎:aspnet_filter.dll将“/eurl.axd/GUID”附加到无扩展名网址,aspnet_isapi.dll不会删除“/eurl.axd/GUID”。

    我想知道如何解决这个问题? (我需要无扩展名的网址,不能使用通配符脚本映射)

    由于

      

    更新 - 已解决

    删除根网站的ISAPI过滤器

    中的v2.0 aspnet_isapi.dll

2 个答案:

答案 0 :(得分:1)

要使用ASP.NET v4无扩展名网址功能,请检查以下列表:

1)v4.0 aspnet_filter.dll在Web服务器级别注册为ISAPI筛选器。

2)“。axd”是脚本映射到网站级别的v4.0 aspnet_isapi.dll。

3)网站具有阅读和脚本权限。

4)注册表中的“EnableExtensionlessUrls”未设置或设置为1.

5)网站配置为asp.net 4.0

6) v2.0 aspnet_filter.dll未注册,请查看根网站的ISAPI筛选器列表(这会导致我的问题)

如果以上检查结果,您需要的唯一其他内容是路由表或某些ASP.NET代码,它将URL重新映射到托管处理程序。

答案 1 :(得分:0)

请注意,IIS 6和IIS 7有两个不同的管道,因此ASP.NET应用程序在这两种环境中的运行方式不同。

请阅读:ASP.NET Integration with IIS 7

  

在IIS 7中,ASP.NET请求处理管道直接覆盖IIS管道,主要是在它上面提供一个包装器而不是插入它。

但是

  

在IIS 6.0和以前的版本中,ASP.NET是作为IIS ISAPI扩展实现的。