1

私はリダイレクトチェッカーをコーディングしようとしています.私が持っている解決策は今朝まとめられたばかりなので、最も効率的ではありませんが、1つのことを除いて、必要なすべてのことを行います:

停止する前に 2 つのサイトのみをチェックし、エラーは発生せず、「request.GetResponse() as HttpWebResponse;」で停止するだけです。3ページ目の行。

別のサイトを使用して、チェックするページの組み合わせを変更しようとしましたが、2 つしかチェックされません。

何か案は?

        string URLs = "/htmldom/default.asp/htmldom/dom_intro.asp/htmldom/dom_examples2.asp/xpath/default.asp";
        string sURL = "http://www.w3schools.com/";
        string[] u = Regex.Split(URLs, ".asp");

        foreach (String site in u)
        {
            String superURL = sURL + site + ".asp";

            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(superURL);

            request.Method = "HEAD";
            request.AllowAutoRedirect = false;

            var response = request.GetResponse() as HttpWebResponse;
            String a = response.GetResponseHeader("Location");

            Console.WriteLine("Site: " + site + "\nResponse Type: " + response.StatusCode + "\nRedirect page" + a + "\n\n");
        }
4

1 に答える 1

5

a がスローされると壊れるという事実は別として、WebException単に停止する理由は、応答を決して破棄しないためだと思います。複数の URL が同じサイトによって実際に提供されている場合、それらは接続プールを使用します。また、応答を破棄しないことで、接続を解放していません。以下を使用する必要があります。

using (var response = request.GetResponse())
{
    var httpResponse = (HttpWebResponse) response;
    // Use httpResponse here
}

使用する代わりにここでキャストしていることに注意してくださいas- 応答が でないHttpWebResponse場合、InvalidCastExceptionその行の は次の行の よりも有益NullReferenceExceptionです...

于 2013-03-21T10:52:24.497 に答える