15

如何在 WebException 错误中获取错误号?

try
{
     HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("site");
     HttpWebResponse response = (HttpWebResponse)request.GetResponse();
     Stream stream = response.GetResponseStream();
     int i = stream.ReadByte();
}
catch (WebException e)
{
     //How To Get Error number in WebException Error?
}
4

4 回答 4

28

您需要运行测试以确保它是ProtocolError

if (e.Status == WebExceptionStatus.ProtocolError) 
{
    Console.WriteLine("Status Code : {0}", ((HttpWebResponse)e.Response).StatusCode);
    Console.WriteLine("Status Description : {0}", ((HttpWebResponse)e.Response).StatusDescription);
}
于 2011-09-16T06:29:47.407 回答
6

对于获取错误号:

catch(System.Net.WebException e)
{
    int errorNumber = (int)e.Status;
}
于 2011-09-21T10:27:52.910 回答
0

您可以尝试解析消息,但并不总是有错误号。例如,超时不会导致 HTTP 错误代码。

于 2011-09-16T06:29:28.987 回答
-1

你不能这样做,因为WebException(s)没有错误号。如果这是您想要/需要做的,您可以定义自己的错误编号。

这是文档,您可以获得状态、消息、StackTrace 等。

于 2011-09-16T06:28:45.243 回答