圍繞如何使用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