Как получить сообщение об ошибке от объекта HttpResponse в WebAPI?

у меня есть контроллер, который создает исключение из следующего кода со следующим сообщением:-

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.

3 ответов


как вы поняли в своем комментарии, Вы можете использовать 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"));