4

URL から HTTP 応答ステータス コードを受け取るために、このメソッド (c#) を作成します。このメソッドを実行すると問題なく動作しますが、ループで実行すると 3 回目は動かなくなります。どんな手掛かり??

 public static string isAlive(string url)
    {
        Console.WriteLine("start: Is Alive Test");
        WebRequest request = WebRequest.Create(url);
        try
        {
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            return Convert.ToString((int)response.StatusCode);
        }
        catch(WebException ex)
        {
            HttpWebResponse res  = (HttpWebResponse)ex.Response;
            return Convert.ToString((int)res.StatusCode);
        }
    }

ループ

        for (int i = 0; i < 5; i++)
        {
            string a = isAlive("https://www.yahoo.com/");
            Console.WriteLine(a);
        }
4

4 に答える 4

0

「使用する」を使用すると、うまく機能します。

        using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
        {
            return Convert.ToString((int)response.StatusCode);
        }
于 2014-02-20T09:53:00.827 に答える
0

HttpWebResponse を閉じていないことに関係している可能性があります。そのtry catchにfinallyを追加して、応答を閉じます。また、catch 内の WebException 応答を閉じます。

于 2014-02-20T09:52:06.990 に答える