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连接。要更改此设置,您可以通过编程方式进行设置,或使用配置部分通过配置设置相同的内容。它会给您一条错误消息?真正地你想问一些特别的问题吗?例外情况是什么,发生在哪里?你确定服务器没有真正超时吗?