2012-01-13 15 views
0

私は複数のアクセスで私のウェブサイトを強調したいと思います。これを行うには、Webサイトを1000回呼び出すWindowsベースのアプリケーションを作成しました。 不幸にも、それは2回の呼び出しのためだけに機能します。これはコードです:ASP.NETアプリケーションをテストするWindowsベースのアプリケーション

static void myMethod(int i) 
    { 
     int j = 0; 

     try 
     { 
      string url = ""; 
      WebRequest wr = null; 
      HttpWebResponse response = null;         
      url = String.Format("http://www.google.com"); 
      wr = WebRequest.Create(url); 
      //wr.Timeout = 1000; 
      response = (HttpWebResponse)wr.GetResponse();     
      MessageBox.Show("end"); 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(j.ToString() + " " + ex.Message); 
     } 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     for (int i = 0; i < 1000; i++) 
     { 
      ThreadStart starter = delegate { myMethod(i); }; 
      Thread thread = new Thread(starter); 
      thread.Start();    
     } 

    } 
+0

2回の試行後はどうなりますか?例外がスローされますか? – granaker

+1

これがうまくいけば、1000個のメッセージボックスが正しく生成されることは知っていますか?また、 - あなたがバックグラウンドスレッドからメッセージボックスを開くことが許可されているかどうかはわかりません。誰でもこれを確認できますか? –

+2

なぜ利用可能なのか試してみてください。 http://support.microsoft.com/kb/231282 http://loadimpact.com/ – Lloyd

答えて

0

は継続する前IDisposableインスタンス(すなわち応答)を配置してみます。

static void myMethod(int i) 
{ 
    int j = 0; 

    try 
    { 

     string url = String.Format("http://www.google.com"); 
     WebRequest wr = WebRequest.Create(url); 
     using(HttpWebResponse response = (HttpWebResponse)wr.GetResponse()) 
     using(Stream responseStream = wr.GetResponseStream()) 
     { 
      //handle response/response stream 
     }     
     MessageBox.Show("end"); //this won't scale!!! 
    } 
    catch (Exception ex) 
    { 
     MessageBox.Show(j.ToString() + " " + ex.Message); 
    } 
} 
+0

この変更は、センス。 –

+0

@WAPGuy:本当ですか?あなたには何が意味がありませんか?リクエストレスポンスの終了を開始するためにGCを残しておくのは良い考えですか? – spender

+0

@WAPGuyもしあなたがそのようなことを言うつもりなら、あなたはそれをどう思うかについて私たちにすべて教えてください。 –

2

Free WCAT Toolを使用してASP.NETページを読み込みます。あなたは、Visual Studio 2010 Ultimateをお持ちの場合

また、このビデオに[How Do I:] Load Test a Web Application

を表示し、私はこのことができます願っています。このlink

を参照してください。

1

デフォルトでは、HttpRequestは同じホストへの2つの接続のみを許可します。 これを変更するには、DefaultConnectionLimitプロパティを設定します。

+1

確かに。なぜなら、OPは応答を閉じたり破棄したりしないため、GCが来るときにのみ閉じられるServicePoint内のオープン(ただし参照されていない)接続を残しているからです。接続の反対側にはかなり失礼です。応答を読まずに接続を掛け、接続をすぐに閉じないでください。 – spender

関連する問題