2012-02-04 329 views
0

我有一個REST服務,我想有一個處理異常異常處理

我的代碼如下一個輔助類:

[WebGet(UriTemplate = "/Test/{param}")] 
public Stream Test(string param) 
{ 
     if (param == "Ok") 
      return Process(param); 
     else 
     { 
      RESTException(System.Net.HttpStatusCode.BadRequest, "Param not ok"); 
      return null; 
     } 
} 


private void RESTException(System.Net.HttpStatusCode httpStatusCode, string message) 
{ 
     OutgoingWebResponseContext response = WebOperationContext.Current.OutgoingResponse; 
     response.StatusCode = httpStatusCode; // or anything you want 
     response.StatusDescription = message; 
} 

我從瀏覽器中測試,但是當我通過錯誤的參數,例如

http://myaddress/Service/Test/badparam 

沒有在瀏覽器中顯示。

我的代碼有什麼問題?

回答

0

我爲如下的RESTException,它拋出適當的異常和slsdo表明休息時從瀏覽器或REST測試客戶端提供測試適當的異常信息由REST WCF WebApi

private void RESTException(SelectFault fault, System.Net.HttpStatusCode httpStatusCode) 
    { 
     throw new WebFaultException<string>(fault.ErrorMessage, httpStatusCode); 
    } 
1

變化

RESTException(System.Net.HttpStatusCode.BadRequest, "Param not ok"); 
return null; 

RESTException(System.Net.HttpStatusCode.BadRequest, "Param not ok"); 
return "Param not ok"; 
+0

對不起,web方法應該返回流,而不是字符串。我不想明確返回thr錯誤消息,而是瀏覽器報告異常(例如400:BAD請求)。任何建議? – bzamfir 2012-02-04 15:06:09

+0

你確定你正在返回一個400錯誤嗎?使用firebug for Firefox或類似的東西,你可以檢查從服務器發回的http頭信息,並確保它們包含一個400錯誤的請求。 – 2012-02-04 15:37:29