如何确定服务器上是否存在Internet文件?

时间:2012-11-28 00:44:01

标签: c# httpwebrequest

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

有什么想法吗?

3 个答案:

答案 0 :(得分:2)

检查StatusCode中的StatusResponseHttpWebResponse。您可以根据收到的值始终throw

答案 1 :(得分:0)

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

通常,您希望HttpWebRequest.GetResponse方法返回http响应代码,而不是.NET throws an exception来发送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;
}

答案 2 :(得分:0)

如果GetResponse或其异步等效项正在抛出,请抓住WebException,您会发现它有许多方便的属性。

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