2011-10-01 45 views
2

我目前在使用IIS中的httphandlers掙扎。 我正在VS2010和Cassini的.NET4中開發一個網站。在這個網站上,我有一個畫廊,其照片通過我的處理程序加載。 例如http://mywebsite.com/Gallery/123/Pic1.jpg 我的HTTP處理程序獲取ID 123並從數據庫返回圖片(簡化)。在IIS6或IIS7經典模式下的HTTP處理程序

所以,一切工作正常在卡西尼(VS綜合網絡服務器)和IIS7在「集成模式」。圖片像他們應該加載一樣。

但我必須在使用IIS6的共享託管服務器上部署此站點。

經過許多搜索和自己的日誌記錄,我發現,請求沒有路由到我的處理程序,所以我從IIS獲得404。

我定義這是足以讓IIS7集成模式:

<system.web> 
    <handlers> 
     <add verb="*" path="Gallery/*/*" type="[coorect Type spec]" /> 
    </handlers> 
</system.web> 

對於IIS7的經典模式我不得不添加

<system.webServer> 
    <handlers> 
     <add name="ImageHandler" verb="*" path="Galler</*/*" type="[type]" modules="IsapiModule" scriptProcessor="c:\windows\Microsoft.net\framework\v4.0.30319\aspnet_isapi.dll"/> 
    </handlers 
</system.webServer> 

這最後的配置只能蒙山東西模塊和scriptprocessor在屬性...

但該配置在IIS6中不起作用....

任何人都可以幫助我嗎?

+0

您是否找到任何解決方案? –

回答

0

問題是IIS6通常通過使用文件擴展名決定通過請求傳遞的ISAPI處理程序。所以它看到.jpg並嘗試從該路徑提供靜態文件。這也是IIS7引用的經典模式。你會注意到你在你的配置中引用了aspnet_isapi.dll,因爲它需要被告知應該如何處理這個。一旦你將它傳遞給aspnet_isapi,asp.net http處理管道就會啓動,你可以執行你的處理程序。

最簡單的修復方法是查找支持IIS7的主機。否則,你可以看到他們是否有任何網址重寫選項。有了這些,你可以重寫一些東西,以便在url上附加一個.ashx,這會讓IIS6抓住它並將其放入asp.net管道,並且你的處理程序會觸發。你也可以看到它們是否允許通配符映射,但對於大多數共享主機來說這是非常高的順序。

相關問題