基于Windows的应用程序来测试我的ASP.NET应用程序

时间:2012-01-13 09:40:00

标签: c# asp.net multithreading stress-testing

我想强调我的网站具有多种访问权限。为此,我创建了一个基于Windows的应用程序,调用1000次网站。 不幸的是,它只适用于2个电话。这是代码:

    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();               
        }

    }

3 个答案:

答案 0 :(得分:2)

而是使用Free WCAT Tool 加载测试ASP.NET页面。

另请观看此视频[How Do I:] Load Test a Web Application

如果您有Visual Studio 2010 Ultimate,请参阅此link

我希望这会有所帮助。

答案 1 :(得分:1)

默认情况下,HttpRequest仅允许两个连接到同一主机。 您可以通过设置DefaultConnectionLimit属性来更改此设置。

答案 2 :(得分: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);
    }
}