WebRequest.GetResponse不会返回404错误

时间:2013-10-18 16:14:50

标签: c# webresponse

我们面临一个奇怪的问题。直到昨天,多年来我们在应用程序中使用了一小段代码来访问特定的URL,以检查内部是否存在特定文件:

    public static bool IsUpdateAvailable ()
    {
        System.Net.WebRequest webRequest = System.Net.WebRequest.Create("http://site/updatefile.exe");
        System.Net.WebResponse webResponse;

        try
        {
            webResponse = webRequest.GetResponse();
        }
        catch (System.Net.WebException e) //If WebException exception thrown then couldn't get response from address
        {
            Console.WriteLine("This program is throw a WebException."+
                        "\n\nException Message :" + e.Message);
              if(e.Status == System.Net.WebExceptionStatus.ProtocolError) return false;
        }
        catch (Exception e) //If general exception thrown then couldn't get response from address
        {
            return false;
        }

        return true;
    }

从昨天开始,如果检查的文件或URL不存在,上面的代码将停止返回404错误,因此始终返回true。 我们无法从c#中解释发生了什么。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

抓住WebException,然后您就可以恢复WebResponse Response,将其投放到HttpWebResponse。那里你会得到一个你期望的StatusCode。