IIS 7.5忽略本地HTTP处理程序

我正在尝试为Web服务提供一个简单的代理应用程序。 为此,我有一个HTTP处理程序,将任何请求传递到我的网站到web.config中configuration的另一个网站。 代理已经在本地进行了testing,并且完美运行。 我已经使用IIS Express在我们的本地服务器上testing了VS 2012,它运行的是Windows Server 2008 R2和IIS 7.5。

现在,我尝试了几天来在我们的部署服务器上安装这个应用程序,但这是无济于事的。 每次我尝试访问应用程序时,都忽略了我在web.config上注册了一个处理程序的事实,并且StaticFile处理程序捕获了该请求。 它看起来像是忽略了我的处理程序注册。

我已经尝试清除我的应用程序中的所有处理程序,只留下我所做的HttpProxy,但它仍然调用StaticFile。

这是有趣的部分。 无意中,我成功地在IIS的根节点上configuration了代理处理程序。 从那时起,处理程序在我的应用程序上工作,但它也打破了服务器上的所有其他应用程序,因为它捕获所有请求,并且没有安装处理程序DLL。 所以它是inheritance的,但不是当我在本地configuration。

这是我的web.config的webServer部分:

<system.webServer> <modules runAllManagedModulesForAllRequests="true" /> <handlers> <add name="ProxyHttpHandler" path="*" verb="*" type="DDProxy.ProxyHttpHandler, DDProxy" resourceType="Unspecified" /> </handlers> </system.webServer> 

基本上我很难过,因为IIS好像忽略了我通过这个应用程序的configuration。 有任何想法吗?

编辑:小发展在这里。 看来,当我编辑applicationhost.configconfiguration传递到应用程序(即使当我使用“位置”指向我的应用程序)。 不过,当我通过web.configconfiguration我没有这样的运气。 尝试使用目录列表。

如果根网站的web.config中包含已定义的http处理程序或其他system.webserver节点,则下面的应用程序可能正在从根应用程序inheritance它的configuration。

您可以尝试阻止http处理程序的根configuration上的inheritance:

 <location path="." inheritInChildApplications="false"> <system.webServer> ... </system.webServer> </location> 

或者像这样在子configuration中使用:

 <system.webServer> <clear/> <modules runAllManagedModulesForAllRequests="true" /> <handlers> <add name="ProxyHttpHandler" path="*" verb="*" type="DDProxy.ProxyHttpHandler, DDProxy" resourceType="Unspecified" /> </handlers> </system.webServer> 

现在,如果在根configuration中的system.web节点中定义了其他的Httphandler,那么您仍然可能会遇到问题,因此您可能需要在子configuration中清除该问题:

 <system.web> <httpHandlers> <clear /> </httpHandlers> </system.web>