2014-04-13 147 views
0

我的web配置有以下幾點:ASP.NET默認靜態處理

<system.webServer> 
    <httpHandlers> 
    <add verb="*" path="myproxy.ashx/*" type="PSAMap.MyProxy"/> 
... 
    </httpHhandlers> 
    <validation validateIntegratedModeConfiguration="false"/> 
    <modules runAllManagedModulesForAllRequests="true"></modules> 
    <modules> 
    <remove name="ScriptModule"/> 
    <add name="ScriptModule" preCondition="managedHandler" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
    </modules> 
... 
</system.webServer> 

但由於靜態文件處理程序無法找到它像http://www.mysite.com/myAppName/myproxy.ashx/test/picture.jpg 一個URL失敗。我需要其路徑以「myproxy.ashx」開頭的EVERY URL來處理該處理程序。我沒有正確指定「runAllManagedModulesForAllReaquests」嗎?這是使用經典管道和.Net 2.0的應用程序池中Windows 2008 Server上的IIS。任何幫助極大讚賞

回答

0

顯然我遺漏了一個重要的細節 - 我只是試圖得到這個工作到目前爲止在我的開發環境中使用隨Visual Studio附帶的Cassini Web服務器... 當我改變了網絡在IIS下運行的應用程序的.config配置文件 - 它工作正常!

我沒有意識到web.config指定的處理程序在開發vs IIS中的實現方式的差異。因此,任何試圖獲得標準外觀URL(無查詢字符串)的人看起來像一個靜態文件(如http://www.yoursite.com/yourapp/customhandler.ashx/folder/file.ext),Cassini服務器將始終調用默認的靜態處理程序。但是,如果你有一個指定你的處理器類的url的規則的httphandler規則,以「customhandler.ashx」開頭(在這個例子中),IIS應該正確地爲你調用這個處理器。您可能還需要模塊設置中的runAllManagedModulesForAllRequests =「true」屬性。

希望有人認爲這有用。

這是指向我的問題/答案:VS2010 development web server does not use integrated-mode HTTP handlers/modules