Tôi đang cố gắng cải thiện thông tin được cung cấp để phản hồi lại lỗi được xử lý trong ứng dụng.500 Lỗi máy chủ nội bộ khi sử dụng HttpWebRequest, làm cách nào tôi có thể gặp lỗi thực?
Đây là mã:
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
Các WebException được ném trên dòng *
Hiện nay tất cả những gì nhìn thấy trong ngoại lệ là "Các máy chủ từ xa trở về một lỗi: (500) Lỗi máy chủ nội bộ ". Tôi đã nhìn vào ngoại lệ trong gỡ lỗi nhưng thông tin tôi cần là không có-tôi đoán phản ứng sẽ cần phải được đọc trong để xem thông tin đó nhưng nó không bao giờ được rằng đến nay.
Nhược bằng tôi lấy yêu cầu và dán nó vào trình duyệt của tôi trực tiếp tôi có thể xem chi tiết lỗi trong định dạng XML được trả về từ API Tôi đang gọi điện thoại, thông tin như:
<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>
Có cách nào Tôi có thể thay đổi mã này để tôi có thể vượt qua lỗi 500 và xem phản hồi thực tế, tôi muốn có thể phân tích cú pháp xml này để tìm ra vấn đề thực sự cho sự cố.
Lưu ý: Ngoại lệ có ex.Response (System.Net.HttpWebResponse), nhưng tôi không thể xem thông tin tôi cần ở đó, chỉ tải thông tin Header.
Chỉ cần xem xét điều này ngay bây giờ. Vấn đề đầu tiên nhấn với mã này là "ResponseError" không xuất hiện là một phần của WebExceptionStatus enum http://msdn.microsoft.com/en-us/library/system.net.webexceptionstatus.aspx – DannykPowell
Đánh dấu điều này là chính xác trong mặc dù vậy, vì câu trả lời này đã giúp tôi có được một giải pháp. Mã của tôi (vb.net) trông giống như: Bắt đầu như WebException Sử dụng trình đọc Như StreamReader = New StreamReader (ex.Response.GetResponseStream()) strXML = reader.ReadToEnd() Kết thúc bằng cách sử dụng – DannykPowell
Xin lỗi về điều đó, nó nên thực sự là WebExceptionStatus.ProtocolError. Trong trường hợp này, đối tượng phản hồi sẽ có luồng lỗi. Bây giờ, hãy kiểm tra điều này, nếu luồng lỗi của bạn trống, thì điều đó có nghĩa là máy chủ không gửi bất kỳ điều gì hoặc có lỗi ở đâu đó. Bạn có thể nhận được một tracelog bằng cách sử dụng http://ferozedaud.blogspot.com/2009/08/tracing-with-systemnet.html? That willl hiển thị nếu máy chủ đã gửi một thực thể phản hồi hay không. – feroze