在WCF REST服務如何使用自己的定製故障響應我處理不正確的輸入參數?
詳細信息:
我有一個WCF REST服務下面的接口方法:
[OperationContract]
[WebGet(UriTemplate = "getitem?id={itemId}", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Bare)]
[FaultContract(typeof(DataModel.Fault))]
DataModel.Item GetItem(int itemId);
在我執行的GetItem方法我發現任何錯誤條件(即項目不存在)並創建一個WebFaultException。這工作沒有任何問題。
但是,可以說,調用客戶端調用下面的網址:
http://myserver.com/itemservice/getitem?id=abc
即對於ID輸入值不能轉換成int所要求的的GetItem方法
此調用正確失敗因爲給定的id值不能轉換爲int,但是這個失敗發生在我的任何代碼被執行之前,因此我無法按照分配給接口方法的FaultContract返回我的DataModel.Fault
對象。
所以,問題是,我怎麼可以掛鉤一個高級別的錯誤處理程序來捕獲這種類型的錯誤,隨後回到我自己的錯結構,而不是HTML錯誤WCF生成:
請求錯誤 的服務器在處理請求時遇到錯誤。查看服務器日誌獲取更多詳細信
由於同樣的問題,我也想能夠做同樣的事情的延續,如果客戶要求如下:
http://myserver.com/itemservice/gettitem?id=abc
通知URI中的錯字,gettitem(兩個t)而不是getitem