[英]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框架中對其進行自定義。 問題是,它們很難實施。 我在回答以下另一個問題時實現了意外的消息調度程序:
讓我知道您是否需要任何進一步的信息!
對於上述問題,我沒有找到任何可行的解決方案。 但是我找到了另一種選擇。 在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.