2009-04-15 7 views
1

WebRequestを使用して、Webページまたはメディア(イメージ)が存在するかどうかを確認しています。 GetResponseで私はSystem.Net.WebException例外を取得します。私は100リンクを走り、それが遅くなるように感じる。この例外を取得したり、これを正常に処理したりする方法はありますか?404でWebRequestとSystem.Net.WebExceptionが遅いですか?

static public bool CheckExist(string url) 
    { 
     HttpWebRequest wreq = null; 
     HttpWebResponse wresp = null; 
     bool ret = false; 
     try 
     { 
      wreq = (HttpWebRequest)WebRequest.Create(url); 
      wreq.KeepAlive = true; 
      wresp = (HttpWebResponse)wreq.GetResponse(); 
      ret = true; 
     } 
     catch (System.Net.WebException) 
     { 
     } 
     finally 
     { 
      if (wresp != null) 
       wresp.Close(); 
     } 
     return ret; 
    } 

答えて

2

"キープアライブ" 行の後

wreq.Method = "Head"; 

を設定してみてください。あなたが呼び出しているWebサーバーが十分にスマートな場合、時間を節約するはずの本体の内容を返さないように指示します。

+0

これは動作しないようですが、これはまだ例外をスローします。 var req =(HttpWebRequest)WebRequest.Create( "http://www.google.com/404"); req.Method = "Head"; using(HttpWebResponse response =(HttpWebResponse)req.GetResponse()){} – Contra

+0

これは仕様です。サーバーが404を返した場合、.NetはWebExceptionをスローします。 – David

+0

さて、この投稿は別の投稿からリンクされているため、頭を設定すると例外が発生しません。じゃあ心配しないで :) – Contra

関連する問題