簡體   English   中英

在WCF Rest Service中找不到端點的自定義消息

[英]Customized message for endpoints not found in WCF Rest Service

我正在使用WCF創建一個ReSTful服務。 說我的OperationContract是這樣的:

[OperationContract]
[WebGet(
 ResponseFormat = WebMessageFormat.Json,
 BodyStyle = WebMessageBodyStyle.Wrapped,
 UriTemplate = "GetItemList/{token}/{value}"
)]
Stream GetItemList(string token);

因此,當我致電http://example.com/Service1.svc/GetItemList/myToken/myValue時 ,將調用該服務。

現在,我想編寫一個默認方法,說一些鏈接,“不存在方法/端點”,然后用戶調用http://example.com/Service1.svc/GetItemList/myToken/http://example.com/ Service1.svc / GetItemList / myValue /http://example.com/Service1.svc/GetItemList/

如何在我的代碼中實現呢?

現在我在做什么就像:

 [OperationContract]
 [WebGet(
   ResponseFormat = WebMessageFormat.Json,
   BodyStyle = WebMessageBodyStyle.Wrapped,
   UriTemplate = "GetItemList/"
 )]
 string ValidateItemList();

 [OperationContract]
 [WebGet(
   ResponseFormat = WebMessageFormat.Json,
   BodyStyle = WebMessageBodyStyle.Wrapped,
   UriTemplate = "GetItemList/{Val1}"
 )]
 string ValidateItemList(string Val1);

在函數中,我只返回了一個字符串,內容為“ No method Exists”。

有沒有更好的辦法? 我可以針對指向我的服務的URL自定義錯誤消息嗎? 例如,針對所有不存在的url請求的通用消息,這些消息直接指向我的服務?

基本上,WCF的體系結構嘗試將任何協議的低級組件(在本例中為http)抽象化,因此您不必擔心這些細節類型。 不幸的是,該引擎無法提供一種處理引擎無法正確路由的好方法。

在這種情況下,無法將URI“分派”到正確的合同實現類。 該引擎具有稱為Dispatchers的這些很棒的組件,請等待,可以通過配置或以編程方式在wcf框架中對其進行自定義。 問題是,它們很難實施。 我在回答以下另一個問題時實現了意外的消息調度程序:

處理傳遞給WCF服務的無效URI

讓我知道您是否需要任何進一步的信息!

對於上述問題,我沒有找到任何可行的解決方案。 但是我找到了另一種選擇。 在VS 2012中,Microsoft發布了ASP.NET Web API。 他們說,這是WCF Rest的下一版本。 因此,在這種情況下,您可以非常輕松地處理這些情況。 我們可以在其中使用路由方法。

對該解決方案感興趣的任何人都可以在這篇文章中獲得一個入門: http : //www.asp.net/web-api/overview/web-api-routing-and-actions/routing-in-aspnet-web- api

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM