3

我一直在研究使用 .net Web API 编写 Web 服务,但我看到了两种不同的发送错误消息的方法。第一个是返回一个HttpResponseMessage适当的HttpStatusCode集合,像这样:

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];
}

使用其中任何一种都有什么优点/缺点?在可扩展性和性能方面,哪一个比另一个更好?

4

1 回答 1

0

如果有人好奇我往哪个方向走,我选择了HttpResponseException以下几个原因:

  • 它使不熟悉 WebAPI 的人更容易阅读代码(大多数人都知道,当您抛出异常时,会出现问题)
  • 在我的测试中HttpResponseExceptions返回更快,YMMV
  • 单元测试更容易(只需断言抛出异常)
于 2014-07-04T18:32:44.017 回答