2012-01-13 52 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