我的WebAPI方法返回错误响应:
return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, "Something bad happened");
在我的客户端(一个MVC项目),我想显示错误消息,但无法收到消息"发生了一些不好的事情"显示:
var response = await client.SendAsync(request);
if (!response.IsSuccessStatusCode)
{
ViewBag.Error= response.ReasonPhrase;
}
除了ReasonPhrase,我已尝试response.ToString()
,response.Content.ToString()
和response.Content.ReadAsStringAsync()
。他们都没有得到我的信息。 Postman如何能够显示消息?
我是如何访问消息字符串的?
答案 0 :(得分:5)
如果您的回复内容以application/json
的形式返回,则可以使用Json.Net
对其进行反序列化:
if(!response.IsSuccessStatusCode)
{
var errors = Newtonsoft.Json.JsonConvert.DeserializeObject<Dictionary<string, object>>(response.Content.ReadAsStringAsync().Result);
var message = errors[HttpErrorKeys.MessageKey];
// message is "Something bad happened"
}
答案 1 :(得分:3)
我认为response.Content.ReadAsStringAsync()
会返回Task<string>
,而不是string
。您需要使用
response.Content.ReadAsStringAsync().Result
或者如果您的方法标记为async
,您可以等待它。
string message = await response.Content.ReadAsStringAsync();
答案 2 :(得分:0)
这就是我所做的以获取错误消息。完成调试后,您可以更改返回类型
public string someRequest()
{
try
{
var response = await client.SendAsync(request);
return "Ok";
}
catch (Exception e)
{
return e.Message;
}
}