如何从 WebAPI 中的 HttpResponse 对象获取错误消息

本文关键字:对象 获取 取错误 消息 HttpResponse 中的 WebAPI | 更新日期: 2023-09-27 18:18:14

>我有一个控制器,它从以下代码生成异常,并显示以下消息:-

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"));

但是我收到一个错误,内容不是"无权限"。 似乎我也无法将响应投射到HttpError以获取消息内容"无权限"。状态代码返回正常。只是努力获得message content.

如何从 WebAPI 中的 HttpResponse 对象获取错误消息

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

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

您可以尝试以下操作:

var errorContent = await response.Content.ReadAsAsync<HttpError>();
Assert.That(errorContent.Message,Is.EqualTo("No Permission"));

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

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