GetRequestStream的效率为什么这么底?

yeyaodefengdi 2008-12-13 01:24:26
我用 C#来POST 一个xml文件到服务器,并获得返回, 但运行到 GetRequestStream 的时候特别慢,需要2-3秒才返回,
为什么?有什么好方法提高效率吗? 前段时间用C#写了一个往TCP某端口写数据,建立连接的时候也是特别慢,后来由于急,
没办法,只有改用C++来做了,是不是C#就这本事? 我才用C#不久,往高手指教。

下面是我POST数据的代码,往高手指教

using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Configuration;
using System.Web;
//using System.Web.Security;

using System.IO;
using System.Net;
using System.Security.Cryptography.X509Certificates;
using System.Net.Security;

namespace pahttps
{
class Program
{

static string inputFileName;
static string outputFileName;

static void Main(string[] args)
{
inputFileName = args[0];
outputFileName = args[1];
StreamReader DataReader = new StreamReader(inputFileName,UnicodeEncoding.GetEncoding("GB2312"));
string DataString = DataReader.ReadToEnd();
DataReader.Close();

HttpWebRequest HttpWReq = (HttpWebRequest)WebRequest.Create("https://www.myweb.com/invoke/receive?");
HttpWReq.Method = "POST";
string postData = DataString;
Encoding encoding = Encoding.GetEncoding(936);
byte[] byte1 = encoding.GetBytes(postData);

HttpWReq.ContentType = "text/xml";
HttpWReq.ContentLength = byte1.Length;
System.Net.ServicePointManager.CertificatePolicy = new MyPolicy();
HttpWReq.ClientCertificates.Add(new X509Certificate2("my.pfx", "1234"));

Stream SendStream=null;

Console.WriteLine("Create GetReq start " + System.DateTime.Now);
SendStream = HttpWReq.GetRequestStream(); ////这里比较郁闷,需要2-3秒,就是这里效率低,求教
Console.WriteLine("Create GetReq end " + System.DateTime.Now);

Console.WriteLine("post start " + System.DateTime.Now);
SendStream.Write(byte1, 0, byte1.Length);
SendStream.Close();
Console.WriteLine("post end " + System.DateTime.Now);

Console.WriteLine("Create Respon Start " + System.DateTime.Now);
HttpWebResponse response = (HttpWebResponse)HttpWReq.GetResponse();
Stream receiveStream = response.GetResponseStream(); //这里也比较慢。。。。。。
Console.WriteLine("Create Respon End " + System.DateTime.Now);

Console.WriteLine("receive start " + System.DateTime.Now);
StreamReader readStream = new StreamReader(receiveStream, Encoding.UTF8);
Console.WriteLine("Response stream received.");
Console.WriteLine("receive end " + System.DateTime.Now);

string ReceivedString = "";
ReceivedString = readStream.ReadToEnd();
Console.Write(ReceivedString);
readStream.Close();
receiveStream.Close();

StreamWriter ReturnFile;
ReturnFile = File.CreateText(outputFileName);
ReturnFile.Write(ReceivedString);
ReturnFile.Flush();
ReturnFile.Close();

}

public bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)
{
return true;
}
}

public class MyPolicy : ICertificatePolicy
{
public MyPolicy()
{
}

public bool CheckValidationResult(ServicePoint srvPoint, X509Certificate certificate, WebRequest request, int certificateProblem)
{
return true;
}
}
}
...全文
1508 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
wanghao2979 2011-03-23
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 wyware01 的回复:]
呵呵,我和你遇到了一样的问题,其实很简单,就是代理惹的祸
在 GetRequestStream() 之前加入
HttpWReq.Proxy = null;
就好了。
.net framework 2.0 默认搜索代理。
[/Quote]




上面的学习了
tkggusraqk 2011-03-23
  • 打赏
  • 举报
回复
语言没有什么烂不烂,要看应用场合,在说了,.NET是高封装的,有些东西是被封装在封装的,安全机制不同
PlayerYK 2009-09-09
  • 打赏
  • 举报
回复
谢谢楼上,加上这句,果然快了不少
wyware01 2009-01-14
  • 打赏
  • 举报
回复
呵呵,我和你遇到了一样的问题,其实很简单,就是代理惹的祸
在 GetRequestStream() 之前加入
HttpWReq.Proxy = null;
就好了。
.net framework 2.0 默认搜索代理。
yeyaodefengdi 2008-12-18
  • 打赏
  • 举报
回复
晕那,是这里没能能解决,还是就这样?
yeyaodefengdi 2008-12-15
  • 打赏
  • 举报
回复
没高手解答吗? 郁闷
sprc_lcl 2008-12-13
  • 打赏
  • 举报
回复
这两个地方都是需要远程回应时间的,时间长说明网络差,虽然我没这方面的困扰,也不排除可能C#真的烂
yeyaodefengdi 2008-12-13
  • 打赏
  • 举报
回复
谢谢答复,不过好像和网络没什么关系,因为同样的功能,我有用C++写,返回只是0.2秒
,郁闷呀
YOLO医学影像组织结构目标检测数据集 目标类别:['0', '1', '2', '3', 'object'] 中文类别:['其他', '其他', '其他', '其他', '物体'] 训练集:13984 张 验证集:1894 张 测试集:0 张 总计:15878 张 该数据集提供了data.yaml文件,内容如下: train: ../train/images val: ../valid/images test: ../test/images nc: 5 names: ['0', '1', '2', '3', 'object'] 该数据集聚焦于医学影像领域,专为组织结构识别与分析设计,具有高度专业性和临床应用价值。其核心检测目标为人体或生物组织的微观结构特征,适用于病理学研究、影像辅助诊断及医学图像自动化分析场景。数据采集覆盖多种组织形态,为相关算法模型训练提供高质量视觉样本。 数据集包含训练集13984张、验证集1894张、测试集0张,总计15878张图像。训练集规模充足,可支撑模型充分学习各类组织结构特征;验证集比例合理,确保模型在未见数据上的泛化能力评估可靠;测试集虽为空,但不影响模型开发与验证流程的完整性,整体分布符合工业级目标检测数据集的标准配置。 所有图像均经过专业标注,标注边界清晰、覆盖完整,针对不同组织形态提供了精确的区域标记。标注过程遵循医学影像分析规范,确保每个目标实例的语义一致性与空间准确性,为后续模型训练提供了高保真度的监督信号,有效保障了模型性能的稳定提升。 该数据集可广泛应用于医疗影像分析系统开发、病理切片自动识别、手术导航辅助系统训练等实际医疗场景。其高质量标注与多样化的组织结构样本,有助于推动人工智能技术在精准医疗、智能诊断和医学教育领域的落地应用,为提升临床效率与诊断准确性提供坚实的数据基础。

111,129

社区成员

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

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

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