Próbuję poprawić informacje dostarczone w odpowiedzi na błąd obsługiwany w aplikacji.500 Wewnętrzny błąd serwera podczas korzystania z HttpWebRequest, jak mogę uzyskać prawdziwy błąd?
Jest to kod:
Try
httpRequestObj = HttpWebRequest.Create(strRequest)
httpRequestObj.Method = "GET"
httpRequestObj.UseDefaultCredentials = True
* httpResponse = httpRequestObj.GetResponse
Using reader As StreamReader = New StreamReader(httpResponse.GetResponseStream())
strXML = reader.ReadToEnd()
End Using
Catch ex As WebException
'do something with ex
End Try
WebException jest wyrzucane na linii *
Obecnie widzę w Wyjątkiem jest „Zdalny serwer zwrócił błąd: (500) Internal Server Error ". Sprawdziłem wyjątek podczas debugowania, ale informacje, których potrzebuję, nie istnieją. Myślę, że odpowiedź musiałaby zostać odczytana, aby zobaczyć te informacje, ale nigdy nie zaszła tak daleko.
Jeśli wezmę żądanie i wklej go w przeglądarce bezpośrednio mogę zobaczyć szczegóły o błędach w formacie XML, który jest zwracany z API Dzwonię, informacji jak:
<Error>
<description>info I want to get to here</description>
<detail />
<code>info I want to get to here</code>
<source />
<category>info I want to get to here</category>
<file>info I want to get to here</file>
<line>info I want to get to here</line>
<pad />
</Error>
Czy istnieje jakiś sposób, Mogę zmienić ten kod tak, że mogę ominąć błąd 500 i zobaczyć rzeczywistą odpowiedź, chciałbym móc przeanalizować ten xml, aby znaleźć prawdziwy problem z powodu niepowodzenia.
Uwaga: Wyjątek ma ex.Response (System.Net.HttpWebResponse), ale nie widzę informacji, których potrzebuję, tylko ładunek informacji nagłówka.
Wystarczy spojrzeć na to teraz. Pierwszy problem związany z tym kodem polega na tym, że "ResponseError" nie wydaje się być częścią wyliczenia WebExceptionStatus http://msdn.microsoft.com/en-us/library/system.net.webexceptionstatus.aspx – DannykPowell
Oznaczyć to jako poprawne w pomimo tego, ponieważ ta odpowiedź pomogła mi znaleźć rozwiązanie. Mój kod (vb.net) wygląda następująco: połów EX jako WebException Używanie czytnika Jak StreamReader = new StreamReader (ex.Response.GetResponseStream()) strXML = reader.ReadToEnd() End Korzystanie – DannykPowell
przykro z tego powodu, to powinien faktycznie jest WebExceptionStatus.ProtocolError. W takim przypadku obiekt odpowiedzi powinien mieć strumień błędów. Niedawno, jeśli strumień błędów jest pusty, może to oznaczać, że serwer albo nie wysłał niczego, albo gdzieś jest błąd. Czy możesz uzyskać list śledzenia za pomocą http://ferozedaud.blogspot.com/2009/08/tracing-with-systemnet.html? To będzie pokazane, jeśli serwer wysłał jednostkę odpowiedzi, czy nie. – feroze