HttpClient PostAsync to WebApi — возвращает 500, но исключение не выдается)

Я звоню в службу веб-API следующим образом:

var response = client.PostAsync("http://localhost:8080/api/values", new FormUrlEncodedContent(new[] {new KeyValuePair<string, string>("a", "b"),}))
                     .Result;

Результат

"внутренняя ошибка сервера 500"

Исключение не выдается (хотя я установил для VS значение Break при возникновении исключений CLR)

Я могу каким-либо образом заставить VS всплывать основное исключение?


person Alex    schedule 25.09.2013    source источник
comment
Ошибка может возникнуть на более раннем этапе конвейера, даже до запуска управляемого кода. В просмотрщике событий есть что-нибудь? Если нет, вы можете направить свой трафик через прокси-сервер, такой как Fiddler, иногда есть подробные сведения об ошибках.   -  person argaz    schedule 25.09.2013


Ответы (1)


Нет основного исключения, поэтому вы не можете его раздуть. Однако, если вы хотите создать его, вы можете позвонить

 response.EnsureSuccessStatusCode();

Если код ответа 4xx или 5xx, то он выдаст ошибку.

person Darrel Miller    schedule 25.09.2013
comment
Я знаю, что могу создать исключение с помощью response.EnsureSuccessStatusCode, но я пытаюсь выяснить, что вызывает ошибку 500 в первую очередь... Ни одна из моих точек останова в моих обработчиках не сработала и т.д... - person Alex; 25.09.2013
comment
@Alex Аааа, ты хочешь знать, что за ошибка на стороне сервера! Одна вещь, которую вы можете сделать, это установить трассировку ASP.NET. Другой трюк, который иногда помогает, — это получить доступ к ответному сообщению и вызвать response.Content.LoadIntoBufferAsync().Wait(). Это приведет к тому, что сериализация будет выполнена раньше, когда вы все еще можете перехватывать любые ошибки, которые она выдает. - person Darrel Miller; 25.09.2013
comment
Вместо этого я бы порекомендовал elmah, который намного проще в установке и имеет действительно приятный пользовательский интерфейс. - person Dmitry Sevastianov; 27.09.2013