كيف تقرأ ملقم داخلي وصف الخطأ ASP.NET مع صافي؟
سؤال
وها رمز:
using (var client = new WebClient())
{
try
{
var bytesReceived = client.UploadData("http://localhost", bytesToPost);
var response = client.Encoding.GetString(bytesReceived);
}
catch (Exception ex)
{
}
}
وأنا على الحصول على هذا HTTP 500 خطأ خادم داخلي عندما يتم استدعاء أسلوب UploadData. ولكن لا استطيع ان ارى وصف الخطأ في أي مكان في كائن "السابق" أثناء تصحيح. كيف يمكنني كتابة هذا الرمز حتى أتمكن من قراءة وصف الخطأ؟
المحلول
وخوادم الويب غالبا ما يعود صفحة خطأ مع مزيد من التفاصيل (إما HTML أو نص عادي اعتمادا على الخادم). يمكنك انتزاع هذا عن طريق اصطياد WebException
وقراءة دفق استجابة من الممتلكات Response
لها.
نصائح أخرى
ولقد وجدت معلومات مفيدة من أجل التصحيح بهذه الطريقة:
catch (WebException ex)
{
HttpWebResponse httpWebResponse = (HttpWebResponse)ex.Response;
String details = "NONE";
String statusCode = "NONE";
if (httpWebResponse != null)
{
details = httpWebResponse.StatusDescription;
statusCode = httpWebResponse.StatusCode.ToString();
}
Response.Clear();
Response.Write(ex.Message);
Response.Write("<BR />");
Response.Write(ex.Status);
Response.Write("<BR />");
Response.Write(statusCode);
Response.Write("<BR />");
Response.Write(details);
Response.Write("<BR />");
Response.Write(ex);
Response.Write("<BR />");
}
وحاول اصطياد HttpException وندعو GetHtmlErrorMessage () على أنه
ولقد أحببت دائما
Debug.WriteLine( ex.ToString() );
ويجب عليك استخدام HttpWebRequest وHttpWebResponse. WebClient هو أبسط شيء لاستخدامها للقيام التواصل على شبكة الإنترنت الأساسية، ولكنها لا توفر الوظائف التي تحتاج إليها. أعتقد أنه من الأفضل أن تفعل هذا لأنها لن رمي استثناء.