2016-06-18 4 views
4

Мой метод WebAPI возвращает ответ об ошибке:Как прочитать сообщение об ошибке из Request.CreateErrorResponse?

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

'response.Content.ReadAsStringAsync()' должен это сделать. Можете ли вы опубликовать код, который вы пытались сделать? Может быть и другая ошибка. –

+0

Я думаю, что знаю проблему, добавленную в качестве ответа. –

ответ

0

Вот что я делаю, чтобы получить сообщение об ошибке. когда вы закончите отладку, вы можете изменить тип возвращаемого

 public string someRequest() 
    { 
     try 
     { 
      var response = await client.SendAsync(request); 
      return "Ok"; 
     } 
     catch (Exception e) 
     { 
     return e.Message; 
     } 
    } 
4

Если содержание ответа возвращается как 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" 
} 
3

Я думаю, что response.Content.ReadAsStringAsync() возвращает Task<string>, а не string. Вы должны были бы использовать

response.Content.ReadAsStringAsync().Result 

или если ваш метод помечен async вы можете ждать его.

string message = await response.Content.ReadAsStringAsync(); 
+0

Хм это может быть ... попробуем. Благодарю. – Prabhu

+0

Что вы получите? –

Смежные вопросы