2012-01-13 84 views
0

我想強調我的網站有多個訪問。爲此,我創建了一個基於Windows的應用程序,該應用程序調用了1000次該網站。 不幸的是它只適用於2個電話。這是代碼:基於Windows的應用程序來測試我的ASP.NET應用程序

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

兩次嘗試後會發生什麼?是否拋出異常? – granaker 2012-01-13 09:48:03

+1

你知道,如果這個工作,你會產生1000個消息框?另外 - 我不知道你是否被允許從後臺線程打開一個消息框。任何人都可以確認嗎? – 2012-01-13 09:49:27

+2

爲什麼要嘗試並重塑已有的功能。 http://support.microsoft.com/kb/231282 http://loadimpact.com/ – Lloyd 2012-01-13 09:58:49

回答

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

此更改不會生成任何感。 – 2012-01-13 09:54:47

+0

@WAPGuy:真的嗎?什麼對你沒有意義?離開GC啓動關閉請求響應對你來說是個好主意? – spender 2012-01-13 09:58:52

+0

@WAPGuy如果你要說這樣的話,你應該讓我們所有人都知道你爲什麼這麼想。 – 2012-01-13 10:00:40

1

默認情況下HttpRequest只允許兩個連接到同一主機。 您可以通過設置DefaultConnectionLimit屬性來更改此設置。

+1

確實。 OP對連接限制意想不到的原因是因爲他們沒有關閉/處置響應,因此只能在GC出現時關閉ServicePoint中的開放(但未引用)連接。對連接的另一端也是非常粗魯的......掛起連接而不讀取響應,然後不及時關閉連接。 – spender 2012-01-13 10:17:49