Webapi: Чтение ошибок -- model-view-controller поле с участием asp.net-web-api поле с участием asp.net-mvc-5 пол Связанный проблема

WebApi: Reading errors


0
vote

проблема

русский

У меня есть простой веб-API, который потребляется из проекта MVC, я продолжаю получать «код состояния ответа не указывает на успех» и был задан вопросом, как бы я получил тело ответа от ошибки, я могу видеть Ошибка в просмотру отдыха, но не может перейти к ошибке. Это следующий код в приложении MVC

 <код> public ActionResult Index()     {          try         {             var uri = "http://localhost:57089/api/values";              using (var client = new HttpClient())             {                 Task<string> response =  client.GetStringAsync(uri);                  object result = JsonConvert.DeserializeObject(response.Result);                  return (ActionResult) result;              }           }         catch (Exception ex)         {             return Content(ex.ToString());         }          return View();     }   

В пределах контроллера API я отправляю плохой запрос, вот код

 <код>         public IHttpActionResult Get()         {          return BadRequest("this is a very bad request " + System.DateTime.Now.ToUniversalTime());          }   

Я пытался использовать WebException, httprequeStexexception как исключения, чтобы поймать ошибку без удачи.

Я могу видеть тело ответа внутри среднего просмотра

webapi viewier

Я хочу иметь возможность перейти к сообщению об ошибке, чтобы я мог передать это клиенту (который позже будет изменен на GUID).

[отредактировано]

У меня есть решение без использования getStringasync, но хотел использовать это, если это возможно.

Вот решение

 <код>  var httpClient = new HttpClient();             httpClient.BaseAddress = new Uri(url);             HttpResponseMessage responseMessage = httpClient.GetAsync("").Result;              if (responseMessage.IsSuccessStatusCode) return Content(responseMessage.ToString());             var a = responseMessage.Content.ReadAsStringAsync().Result;              var result = JsonConvert.DeserializeObject<HttpError>(a);              object value = "";              return Content(result.TryGetValue("ErrorMessage", out value) ? value.ToString() : responseMessage.ToString());   

Есть ли лучший способ?

Английский оригинал

I've got a simple web api which is consumed from a mvc project, I keep on getting the 'Response status code does not indicate success' and was wondering how would I get the response body from the error, I can see the error within a rest viewer but can't navigate through to the error. This is the following code within the MVC app

public ActionResult Index()     {          try         {             var uri = "http://localhost:57089/api/values";              using (var client = new HttpClient())             {                 Task<string> response =  client.GetStringAsync(uri);                  object result = JsonConvert.DeserializeObject(response.Result);                  return (ActionResult) result;              }           }         catch (Exception ex)         {             return Content(ex.ToString());         }          return View();     } 

Within the API controller I'm sending a bad request, here's the code

        public IHttpActionResult Get()         {          return BadRequest("this is a very bad request " + System.DateTime.Now.ToUniversalTime());          } 

I've tried to use WebException, HttpRequestException as exceptions to catch the error with no luck.

I can see the response body within the rest viewer

WebApi Viewier

I want to be able to navigate to the Error Message so I can pass that to the client (which later will be changed to a guid).

[EDITED]

I've got a solution without using GetStringAsync, but wanted to use that if possible.

Here's the solution

 var httpClient = new HttpClient();             httpClient.BaseAddress = new Uri(url);             HttpResponseMessage responseMessage = httpClient.GetAsync("").Result;              if (responseMessage.IsSuccessStatusCode) return Content(responseMessage.ToString());             var a = responseMessage.Content.ReadAsStringAsync().Result;              var result = JsonConvert.DeserializeObject<HttpError>(a);              object value = "";              return Content(result.TryGetValue("ErrorMessage", out value) ? value.ToString() : responseMessage.ToString()); 

Is there a better way?

</div
        

Список ответов

0
 
vote

Использование WebException Вы должны быть в состоянии добраться до ResponseStream и пользовательское сообщение об ошибке, как это:

 <код> GetHashCode0  

Надеюсь, что помогает.

 

Using WebException you should be able to get to the ResponseStream and the custom error message like this:

catch (WebException e) {     var message = e.Message;     using (var reader = new StreamReader(e.Response.GetResponseStream()))     {         var content = reader.ReadToEnd();     } } 

Hope that helps.

</div
 
 
       
       

Связанный проблема

1  Должна ли модель сделать вызовы услуг для получения данных  ( Should model make service calls to get data ) 
Мы создаем веб-сайт, используя шаблон MVC. До сих пор все страницы, которые мы построили использованные модели, которые должны были работать на справочных дан...

8  «Ошибка: httpstatus не может быть разрешена в переменной" Как разрешить это?  ( Error httpstatus cannot be resolved to a variable how to resolve this ) 
Я получаю ошибку в следующем коду в строке 2: <Код> @ResponseStatus(HttpStatus.OK) . Ошибка: « httpstatus не может быть разрешен в переменной ». Какой импорт ...

2  Библиотека шаблона Codeigniter с 2D  ( Codeigniter template library with a 2d array ) 
Я использую следующий шаблон Библиотека . То, что я пытаюсь сделать, это загрузить одну или несколько верхних видов внутри шаблона в качестве массива, чтобы ...

5  IS ASP.NET MVC действительно MVC? Или как отделить модель от контроллера?  ( Is asp net mvc is really mvc or how to separate model from controller ) 
Этот вопрос немного риторический. В какой-то момент я получил ощущение, что ASP.NET MVC не в том, что аутентичная реализация узора MVC. Или я не понял это. ...

0  Показать одну строку по ID - Spring MVC  ( Display single row by id spring mvc ) 
Так что я хочу отобразить один ряд по его идентификатору на весне MVC У меня есть этот DAO: <код> public Message getMessageById(int id){ String sql=...

1  Маршрут MVC  ( Mvc route question ) 
Я пытаюсь сопоставить действие без контроллера до конкретного действия, однако я не хочу отображать контроллер в URL. Я частично достиг этого, используя сопос...

0  Почему этот базовый JSON CALL не работает?  ( Why is this basic json call not working ) 
Следующий звонок JSON всегда ударяет обработчик ошибок AJAX, и я не могу понять, почему: <код> $.ajax({ type: "GET", url: '<%= Url.Action("MyTest", ...

0  Клиентская архитектура для вызова весеннего веб-сервиса  ( Client architecture for calling spring based web service ) 
Я написал веб-сервис на основе SOAP, который работает нормально на сервере Tomcat. Сама служба веб-сервисов - это веб-служба на основе Spring MVC, которая зап...

1  Фильтр сетки Kendo не работает на столбце ID  ( Kendo grid filter is not working on the id column ) 
Я создал сетку Kendo, и все идет хорошо, но, к сожалению, фильтр на столбце ID не работает вообще, даже не возвращает ошибку или исключение, и я не знаю, что ...

1  как нажать на столбец в slickgrid в частности, индекс  ( How to push a column in slickgrid at particular index ) 
<Р> Привет я хочу, чтобы добавить столбец на slickgrid в частности индекс. <Р> Я пытаюсь сделать <код> columns.push({ id: "", name: "", field: "" }) . <Р> Ег...

1  GEF действительно MVC Framework?  ( Is the gef really a mvc framework ) 
В руководствах от http://www.vainolo.com/tutorials/ Положение Модель сохраняется в модели. Я хочу сохранить все данные в файл и хотите получить то же самое,...

1  Опция областей в решении Исследуйте не отображение в Visual Studio 2019  ( Areas option in solution explore not display in visual studio 2019 ) 
Сегодня я обновил Visual Studio 2019 до Версия 16.3-16.4 Но проблема, которую я Невозможно увидеть или добавлять области в моем текущем решении проекта Ис...

4  Мой приложение ASP.NET MVC анемично  ( My asp net mvc application is anemic ) 
Я читаю Fowlers Описание анемического домена, и я считаю, что у меня такие симптомы. У меня есть несколько объектов, не делая ничего, кроме как передавать дан...

0  Автоматическое увеличение данных (INT типа), который не является идентификатором (уже использованный идентификатор) ASP.NET MVC  ( Auto increment of dataint type which is not ididentity already used asp net ) 
Я пытаюсь автоматически увеличивать данные, что не является идентификатором, я использовал SQL Identity на ID, поэтому больше не может использовать его. Я поп...

1  MVC 3: отключение валидации на выбранных полях  ( Mvc 3 disabling validation on selected fields ) 
Мне нужно отключить проверку на определенных полях, когда возникают определенные события, поэтому на основании предположения в этой теме: jQuery Отключить пр...

Связанный проблема

1  Должна ли модель сделать вызовы услуг для получения данных 
8  «Ошибка: httpstatus не может быть разрешена в переменной" Как разрешить это? 
2  Библиотека шаблона Codeigniter с 2D 
5  IS ASP.NET MVC действительно MVC? Или как отделить модель от контроллера? 
0  Показать одну строку по ID - Spring MVC 
1  Маршрут MVC 
0  Почему этот базовый JSON CALL не работает? 
0  Клиентская архитектура для вызова весеннего веб-сервиса 
1  Фильтр сетки Kendo не работает на столбце ID 
1  как нажать на столбец в slickgrid в частности, индекс 
1  GEF действительно MVC Framework? 
1  Опция областей в решении Исследуйте не отображение в Visual Studio 2019 
4  Мой приложение ASP.NET MVC анемично 
0  Автоматическое увеличение данных (INT типа), который не является идентификатором (уже использованный идентификатор) ASP.NET MVC 
1  MVC 3: отключение валидации на выбранных полях 



© 2021 www.qaru.top All Rights Reserved. Q&A House все права защищены


Licensed under cc by-sa 3.0 with attribution required.