2009-06-05 70 views
0

围绕如何使用httpHandler路径属性的规则是否有很好的资源?有关ASP.NET中httpHandler路径的规则是什么?

我看到的时候,我处理程序被调用在不同的环境不同的结果,所以让我解释...

我想允许的URL,例如:

http://mysite/_layouts/myCompany/rest/myservice.svc/param1/param2 

我想仅在“myCompany”文件夹/链接下调用我的处理程序,以便将下列web.config文件放入相应的文件夹中,以免影响应用程序的其余部分。这适用于某些机器上,但不能在其他人:

<configuration> 
    <system.web> 
     <httpHandlers> 
      <add verb="*" path="myservice.svc" type="..." validate="false"/> 
     </httpHandlers> 
    </system.web> 
</configuration> 

现在,我得承认,我有点惊讶,这个工作,因为它基本上必须找到“myservice.svc”出来的“rest/myservice.svc/param1/param2”的相对路径,但它确实找到了它 - 但仅在我的三台测试机器中的两台上。所以,我在机器上试过以下失败:

<add verb"*" path="rest/myservice.svc/*/*" type="..." validate="false"/> 

这工作了几次,现在不工作。作为合乎逻辑的类型,它真的使我感到困扰,如果尽职尽责,我无法解释这一点,但我一直无法让它再次运作。请参阅this类似的Stack Overflow问题。

请注意,下面的工作,但它使我诉诸查询字符串变量提供不理想的参数。

<add verb"*" path="rest/myservice.svc/*" type="..." validate="false"/> 

我看着沿途的父web.config文件中对两台机器,让不同的结果,看看他们是如何定义杀出了一个问题,任何HttpHandlers的并没有什么。

所以,我正在寻找理解如何使用这条路径。

为了什么值得,这是运行在SharePoint网站(因此在这个问题上的“sharepoint”标记),我用它来提供REST(简单的“text/xml”)而不是SOAP。我不想使用完整的WCF,因为它会让船的安装过多,所以我使用的是HTTP处理程序。

此外,我得到的错误是:

virtualPath at System.ServiceModel.AsyncResult.End[TAsyncResult](IAsyncResult result) 
    at System.ServiceModel.Activation.HostedHttpRequestAsyncResult.End(IAsyncResult result) 
    at System.ServiceModel.Activation.HostedHttpRequestAsyncResult.ExecuteSynchronous(HttpApplication context, Boolean flowContext) 
    at System.ServiceModel.Activation.HttpHandler.ProcessRequest(HttpContext context) 
    at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() 
    at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) 

回答

0

的答案仍然是欢迎的,但在这里我找到了一个简单的解决方法。如此简单,它困扰着我,我之前没想到它......

由于我自己从某一点的文件夹/ URL,我可以确保一切都经过我的处理程序:

<add verb"*" path="*" type="..." validate="false"/> 

它有多简单:-S。

这样做的一个好处是,我可以更好地报告不正确的URL的错误。我可能决定使用处理程序工厂而不是处理程序;那么唯一的变化是指定的类型

+0

答案[here](http://stackoverflow.com/questions/955417/httphandler-to-hook-the-svc-requests)可能是相关的。 – leakyboat 2011-05-20 21:41:19