2009-10-15 62 views
5

我試圖映射經典asp頁面的請求,由.net處理,以便它通過自定義httpmodule運行。在IIS中映射經典asp頁面到.net

在IIS我已經重新映射ASP請求ASPNET_ISAPI.DLL - 我敢肯定,我已經在我的測試程序做到了這一點位右

現在我收到此錯誤:

Server Error in '/TestASPRedirect' Application. 
-------------------------------------------------------------------------------- 

This type of page is not served. 
Description: The type of page you have requested is not served because it has been explicitly forbidden. The extension '.asp' may be incorrect. Please review the URL below and make sure that it is spelled correctly. 

Requested URL: /testaspredirect/test.asp 

搜索在線的這個錯誤顯示了一大堆有cassini問題的人,但這並不真正相關,我在XP開發機器上的IIS 5.1上測試了這一點,並且在IIS6上測試也得到相同的錯誤。

我遵循了添加和註冊httphandler(請參閱http://support.microsoft.com/default.aspx?scid=kb;en-us;Q308001)的說明,但我不知道要在ProcessRequest例程中放置什麼以確保請求傳遞。默認什麼是.NET的HttpHandler,我能映射到這個web.config中?:所以像:

<httpHandlers> 
    <add verb="*" path="*.asp" type="standard.nethttphandler"/> 
</httpHandlers> 

我如何告訴asp.net它需要上,而不是通過ASP請求阻止?

+0

我有同樣的問題,但我現在用的是內置的卡西尼網絡服務器。我有一個ASP.NET 2.0網站(而不是Web應用程序),其中主頁和其他頁面是經典的ASP。我的v2.0.50727 \ CONFIG \ web.config中沒有任何條目將* .asp映射到禁止的處理程序。我應該打開一個新的線程還是這個評論足以得到一些幫助? – 2009-10-26 21:44:34

回答

2

它看起來像.asp擴展名映射到HttpForbiddenHandler

如果你使用ASP.NET 1.1中,打開以下文件:

C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\CONFIG\machine.config

如果你使用ASP.NET 2.0,然後打開此文件:

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\CONFIG\web.config

搜索「 path="*.asp"「,然後註釋掉該行。它會像這樣:

<!-- machine.config/ASP.NET 1.1--> 
<add path="*.asp" verb="*" 
    type="System.Web.HttpForbiddenHandler"/>` 

<!-- web.config/ASP.NET 2.0--> 
<add path="*.asp" verb="*" 
    type="System.Web.HttpForbiddenHandler" validate="true"/>` 
+0

感謝您的回答:在web.config中使用2.0// .asp沒有條目,(必須被通配符條目捕獲)。爲.asp添加了一行,嘗試了不同的Handler類型:使用DefaultHttpHandler獲取相同的錯誤,StaticFileHandler嘗試將該頁面下載到瀏覽器,.UI.PageHandlerFactory拋出此錯誤: 沒有爲擴展名註冊生成提供者。 ASP」。您可以在部分註冊一個.... 現在必須離開,但稍後會回來看看是否有任何方法可以實現此目的。也許這是不合邏輯的嘗試這 – DannykPowell 2009-10-16 10:33:09

+0

@Kev - 我有相同的問題,稍有不同的環境(請參閱我原來的問題條目下的評論)。我懷疑我應該打開新的線程,但不知道... – 2009-10-26 21:46:08

+0

@John - 看到您的問題是特定於卡西尼服務器我會打開一個新的問題。 – Kev 2009-10-26 23:45:33

2

其實你只是一個成功的一步。添加以下部分,將本地的網站(或虛擬目錄)的web.config文件:

<configuration> 
... 
<system.web> 
    <compilation> 
     <buildProviders> 
      <add extension=".asp" type="System.Web.Compilation.PageBuildProvider"/> 
     </buildProviders> 
    </compilation> 
    <httpHandlers> 
     <add path="*.asp" verb="*" type="System.Web.UI.PageHandlerFactory" validate="true"/> 
    </httpHandlers> 
</system.web> 

+0

嘿,這工作對我來說,在IIS Express下測試我的Framework 4.5應用程序,但是當轉移到生產服務器時,它失敗了......任何想法? – tomasofen 2014-05-03 00:20:01

0

找到以下文件:

C:\WINDOWS\MICROSOFT.NET\FRAMEWORK\<FramworkVersion>\Config\web.config

其中<FramworkVersion>是文件夾名稱:

在XML編輯器中打開它(甚至記事本很好)

,並添加下面一行:

<add path="*.asp" verb="*" type="System.Web.UI.PageHandlerFactory" validate="True"/> 

下下面的XPath:

configuration/system.web/httpHandlers

取代現有的!

添加下面一行:

<add extension=".asp" type="System.Web.Compilation.PageBuildProvider"/> 

下下面的XPath:

/configuration/system.web/compilation/buildProviders 

工作就像寶石對我來說:)