2014-04-13 105 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