急!求助!使用HttpWebRequest类发送大量数据时,发送时间巨长,请问有人遇到过么

JerryJones 2007-07-04 10:57:17
我使用HttpWebRequest类发送大量数据到服务器,但是有时写数据的时间都非常长,其实数据也就10几k,不知是什么原因。
我的代码如下:

HttpWebRequest req = (HttpWebRequest)WebRequest.Create(uri);
UTF8Encoding encoding = new UTF8Encoding();
Byte[] fbs = encoding.GetBytes(mystr);
req.ContentType = "multipart/related;type=\"text/xml\";charset=\"UTF-8\";" + "boundary=\"" + mm.outterboundary.Substring(2) + "\";" + "start=\"" + mm.Start + "\"";
req.ContentLength = fbs.Length;
req.Method = "Post";
req.Headers.Add("SOAPAction", "\"\"");
req.Accept = "text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2";
req.KeepAlive = false;
req.Headers.Add("Mime-Version","1.0");

try
{
Form1.WriteLog("test.txt", "Send()--2\r\n");

Stream stm = req.GetRequestStream();
stm.Write(fbs, 0, fbs.Length);
stm.Close();

Form1.WriteLog("test.txt", "Send()--3\r\n");
}
catch
{

}

我是在主线程里面启动了一个发送线程,循环调用这段代码的,测试的时候每次写的内容都相同(一台机器发,一台机器接收),有时写的很快,不到一秒,有时写的很慢居然用1分半钟,搞不明白这是为什么。请各位大侠不吝赐教!


...全文
195 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
JerryJones 2007-07-05
  • 打赏
  • 举报
回复
是不是该在开始的时候new 一个httpWebRequest的对象,然后每次使用相同的req发送,并把keepalive设置为true,但是怎么保证连接断掉的时候重连呢,有没有激活检测之类的方法?
zbjg 2007-07-05
  • 打赏
  • 举报
回复
如果你的发送过于频繁,可能会引起服务器端响应慢。
具体说来HttpWebRequest就像是个浏览器(IE),GetRequestStream()就像是你去访问一个网页,快慢往往取决于网站和网速而不是你的浏览器
JerryJones 2007-07-04
  • 打赏
  • 举报
回复
后来跟踪了一下是Stream stm = req.GetRequestStream();这句语句花费的巨多时间,写还是很快的,是不是我没有将 req 释放的原因呢

110,567

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧