0

直到最近,我还使用 HttpWebRequest 来确定 Internet 上是否存在文件。但是现在,我意识到如果服务器不存在,它可以处理 404,我只会得到默认的 404 服务器错误页面。在这种情况下,HttpWebRequest不会引发异常。我想不出一种方法来判断是否发生了 404 错误。

有任何想法吗?

4

3 回答 3

2

检查StatusCodeStatusResponse中的HttpWebResponse。您可以随时throw根据收到的值。

于 2012-11-28T00:47:25.003 回答
0

在返回“找不到页面”页面的服务器上,如果您尝试在浏览器中获取不存在的文件并查看开发工具,则返回代码仍然是 404 Not Found。

通常,您希望该HttpWebRequest.GetResponse方法返回一个 http 响应代码,但.NET 会为 http 错误引发异常

try {  
    HttpWebRequest httpReq = (HttpWebRequest)WebRequest.Create("http://www.contoso.com");
    using (HttpWebResponse httpRes = (HttpWebResponse)httpReq.GetResponse())
    {            
        if (httpRes.StatusCode == HttpStatusCode.OK)
            Console.WriteLine("\r\nResponse Status Code is OK and StatusDescription is: {0}", httpRes.StatusDescription);
        // Releases the resources of the response.
        httpRes.Close();
    }
}
catch (WebException ex) {
    Console.WriteLine("Error returned: {0}",ex.Response);
    // can throw again here.
    throw;
}
于 2012-11-28T00:48:55.350 回答
0

如果GetResponse或它的异步等价物正在抛出,抓住它WebException,你会发现它有许多方便的属性。

特别是,WebException.Response可能对您非常有用。

于 2012-11-28T00:57:12.257 回答