如何从Web API中的HttpResponse对象获取错误消息?

时间:2013-06-13 07:31:12

标签: c# asp.net-web-api

我有一个控制器,它使用以下消息从以下代码生成异常: -

public HttpResponseMessage PutABook(Book bookToSave)
{
   return Request.CreateErrorResponse(HttpStatusCode.Forbidden, "No Permission");
}

正在使用以下代码测试此方法: -

var response = controller.PutABook(new Book());
Assert.That(response.StatusCode,Is.EqualTo(HttpStatusCode.Forbidden));
Assert.That(response.Content,Is.EqualTo("No Permission"));

但是我收到的错误是内容不是“No Permission”。似乎我无法将响应强制转换为HttpError以获取消息内容“No Permission”。状态代码返回正常。只是努力获得message content

4 个答案:

答案 0 :(得分:9)

正如您在评论中所说,您可以使用response.Content.ReadAsAsync<HttpError>(),也可以使用response.TryGetContentValue<HttpError>()。 在这两种情况下,都会检查内容以查看其类型ObjectContent及其值是否从中检索。

答案 1 :(得分:4)

试试这个。 response.Content.ReadAsAsync<HttpError>().Result.Message;

答案 2 :(得分:2)

您可以尝试以下方法: var errorContent = await response.Content.ReadAsAsync<HttpError>(); Assert.That(errorContent.Message,Is.EqualTo("No Permission"));

答案 3 :(得分:0)

以这种方式阅读错误消息。

var ErrMsg = JsonConvert.DeserializeObject<dynamic>(response.Content.ReadAsStringAsync().Result);