2012-07-04 76 views
3

爲了避免靜態請求影響性能,我想使用ASP.NET v4.0 Extensionless URL功能,但它不起作用。ASP.NET v4 Extensionless URL功能在IIS 6.0上不起作用

我的環境:

  1. 的Windows Server SP2和IIS6
  2. asp.net MVC 3 .NET 4
  3. 該站點配置爲ASP.NET 4.0和沒有虛擬文件夾
  4. 沒有ISAPI重寫

我要求像 「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」附加到無擴展名的URL,而aspnet_isapi.dll不會刪除「/eurl.axd/GUID」。

我想知道如何解決這個問題? (我需要擴展名的URL,並不能使用通配符腳本映射)

感謝

更新 - 已解決

根網站的刪除V2.0 ASPNET_ISAPI.DLL ISAPI過濾器

+0

http://haacked.com/archive/2010/12/22/asp-net-mvc-3-extensionless-urls-on-iis-6.aspx – Habib

+0

我檢查了[本文](http:///haacked.com/archive/2010/12/22/asp-net-mvc-3-extensionless-urls-on-iis-6.aspx),這並不能解決我的問題。 – lucn

+2

@lucn請將您的解決方案作爲答案發布,並接受它,這樣如果其他人有同樣的問題,它可以在這裏找到答案。 –

回答

1

要使用ASP.NET V4擴展名的URL功能,檢查這個列表:

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重新映射到託管處理程序。

0

請注意,IIS 6和IIS 7有兩個不同的管道,所以ASP.NET應用程序ru在這兩種環境中不同。

請看:ASP.NET Integration with IIS 7

在IIS 7中,ASP.NET請求處理管道直接覆蓋所述IIS管道,基本上提供一個包裝在其上,而不是插入到它。

在IIS 6.0和以前的版本中,ASP.NET被實現爲一個IIS ISAPI擴展。

+0

我發現,因爲v2.0和v4.0 aspnet_isapi.dll一起存在 – lucn