围绕如何使用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)
答案[here](http://stackoverflow.com/questions/955417/httphandler-to-hook-the-svc-requests)可能是相关的。 – leakyboat 2011-05-20 21:41:19