为什么这不会创建 WebExceptionStatus.ProtocolError?相反,我得到WebExceptionStatus.UnknownError
.
string url = "http://www.ogggle.com/"; // a bad url
var request = (HttpWebRequest) WebRequest.Create(url);
...省略了选项设置
using (var response = (HttpWebResponse) request.GetResponse())
{
foreach (Cookie cookie in response.Cookies)
cookies.Add(cookie);
string urlContent = "";
using (var sr = new StreamReader(response.GetResponseStream()))
urlContent = sr.ReadToEnd();
return urlContent;
}
现在将抛出一个 WebException;然而 WebExceptionStatus 实际上是 UnknownError。我期待一个协议错误。
catch (WebException we)
{
string message = "WEB EXCEPTION DETECTED. Retry counter: " + _retryCount;
message += Environment.NewLine + "Problem with url: " + url + ". Status is: " + we.Status;
message += Environment.NewLine + "Message is: " + we.Message;
if (we.Status == WebExceptionStatus.ProtocolError)
{
message += Environment.NewLine + string.Format("Status Code : {0}", ((HttpWebResponse)we.Response).StatusCode);
message += Environment.NewLine + string.Format("Status Description : {0}", ((HttpWebResponse)we.Response).StatusDescription);
}
WriteToErrorLog(message);
if (DEBUG)
Console.WriteLine(message);
_retryCount++;
}
从我的角度来看,WebException
应该比这更聪明。格式错误或错误的 url 应导致有意义的 WebExceptionStatus。相反,它会导致无用的 UnknownError。WebException
当网址不好时,谁能帮助我理解如何获得有意义的网址?