防止HttpHandler处理WCF请求

时间:2011-01-31 16:40:09

标签: wcf httphandler

我有一个托管WCF服务和HttpHandler的网站。当我打开aspNetCompatibilityEnabled时,HttpHandler开始获取我的WCF请求。我不认为这可能发生,因为它具有.svc扩展,并且处理程序未配置为处理.svc文件。处理程序注册如下:

<system.webServer>
<handlers>
  <add name="TTPDeploy" path="*.deploy" verb="*" type="ServiceHost.DeploymentHandler" resourceType="Unspecified" preCondition="integratedMode" />
  <add name="TTPManifest" path="*.manifest" verb="*" type="ServiceHost.DeploymentHandler" resourceType="Unspecified" preCondition="integratedMode" />
  <add name="TTPApplication" path="*.application" verb="*" type="ServiceHost.DeploymentHandler" resourceType="Unspecified" requireAccess="Script" preCondition="integratedMode" />
</handlers>
</system.webServer>

我确信这只是因为我对WCF和HttpHandlers一无所知。想法?


更新

我最终以不同的方式解决问题。因为我在将aspNetCompatibilityEnabled设置为true时无法让我的WCF请求工作,所以我将其恢复为false。

我的核心问题是我需要通过WCF调用获取我的网络的物理文件路径。我发现在使用WCF获取物理应用程序路径时声明的另一篇文章(我现在无法找到),您应该使用HostingEnvironment.ApplicationPhysicalPath。这是解决问题的一种更直接的方法,但仍然没有回答这个问题。

为什么我的处理程序在未注册到.svc文件时会收到我的WCF请求?

1 个答案:

答案 0 :(得分:0)

由于某些配置,IIS正在接收请求,可能在machine.config中。

要允许请求到达您的处理程序,请将以下内容添加到您的web.config文件中:

<compilation>     
 <buildProviders>         
  <remove extension=".svc" />     
 </buildProviders> 
</compilation>