C# 并行发送多个WebRequest。对于

C# 并行发送多个WebRequest。对于,c#,httpwebrequest,task-parallel-library,C#,Httpwebrequest,Task Parallel Library,我想发送多个WebRequest。我使用了一个Parallel.For循环来实现这一点,但是循环运行了一次,第二次在得到响应时出错 错误: 操作已超时 代码: Parallel.For(0, 10, delegate(int i) { HttpWebRequest request = (HttpWebRequest)WebRequest.Create( new Uri("http://www.mysite.com/service")); string dataT

我想发送多个
WebRequest
。我使用了一个
Parallel.For
循环来实现这一点,但是循环运行了一次,第二次在得到响应时出错

错误:

操作已超时

代码:

Parallel.For(0, 10, delegate(int i) {
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(
        new Uri("http://www.mysite.com/service"));

    string dataToSend = "Data";
    byte[] buffer = System.Text.Encoding.GetEncoding(1252).
        GetBytes(dataToSend);
    request.Method = "POST";
    request.ContentType = "application/x-www-form-urlencoded";
    request.ContentLength = buffer.Length;

    request.Host = "www.mysite.com";

    Stream requestStream = request.GetRequestStream();
    requestStream.Write(buffer, 0, buffer.Length);
    requestStream.Close();

    HttpWebResponse response = (HttpWebResponse)request.GetResponse();
});

最有可能的问题是,在处理完响应后,您需要调用
response.Close()

除了Jim Mischel所说的在响应上调用Close之外,您还需要考虑到,默认情况下,.NET将应用程序一次限制为每个域只有两个活动HTTP连接。要更改此设置,您可以通过编程方式进行设置,或使用配置部分通过配置设置相同的内容。

它会给您一条错误消息?真正地你想问一些特别的问题吗?例外情况是什么,发生在哪里?你确定服务器没有真正超时吗?