2012-07-17 56 views
3

我一直在尋找使用.net Web API編寫Web服務,但我看到兩種不同的方法來發送錯誤消息。第一種方法是用適當的HttpStatusCode集返回HttpResponseMessage,這樣的事情:ASP.NET Web API返回HttpResponseMessage或拋出錯誤

public HttpResponseMessage<string> Get() 
{ 
     ... 
     // Error! 
     return new HttpResponseMessage<string>(System.Net.HttpStatusCode.Unauthorized); 
} 

而另一種方法是隻拋出HttpResponseException,像這樣:

public Person Get(int id) 
{ 
    if (!_contacts.ContainsKey(id)) 
    { 
     throw new HttpResponseException(Request.CreateErrorResponse(HttpStatusCode.NotFound, String.Format("Contact {0} not found.", id))); 
    } 

    return _contacts[id]; 
} 

有什麼優勢/使用任何一個的缺點?就可擴展性和性能而言,要麼比其他更好?

+7

閱讀格倫塊的解釋[HttpResponseMessage和HttpResponseException之間的區別是什麼](http://stackoverflow.com/questions/10660721/what-is-the-difference-between-httpresponsemessage-and-httpresponseexception) – Martin4ndersen 2012-07-17 13:31:29

+0

啊,我沒有'不要看那個帖子。這確實有很大的幫助!謝謝 :) – 2012-07-17 13:45:11

回答

0

如果有些人好奇我去哪個方向,我HttpResponseException去以下幾個原因:

  • 這使得代碼更易讀的人誰是不熟悉WebAPIs(大多數人都知道,當你拋出一個異常,出事了)
  • 在我的測試HttpResponseExceptions更快返回,情況因人而異
  • 它更容易單元測試(只是斷言,拋出了一個異常)
相關問題