首页新闻找找看学习计划

用httpclinet post调用超时

0
悬赏园豆:30 [已解决问题] 解决于 2015-09-18 09:17

我们在使用微信支付时,调用统一下单接口时,用httpclinet的PostAsync方法,要经过3秒多时间系统才会发送数据,不知道有没有什么好方法可以缩短这时间。程序用的是asp.net mvc5 操作系统是win2008R2,程序的调用代码如下

 System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;
            httpClient = new HttpClient();
            httpClient.BaseAddress = new Uri("https://api.mch.weixin.qq.com/");
            httpClient.DefaultRequestHeaders
                  .Accept
                  .Add(new MediaTypeWithQualityHeaderValue("application/xml"));
            httpClient.DefaultRequestHeaders.Connection.Add("keep-alive");
            httpClient.Timeout = TimeSpan.FromSeconds(4);

     string xmlString = parseXML();//要发送的内容

     HttpContent httpContent = new StringContent(xmlString);

    HttpResponseMessage response = await httpClient.PostAsync( "https://api.mch.weixin.qq.com/pay/unifiedorder", httpContent).ConfigureAwait(continueOnCapturedContext: false);

调用这段代码正常用时是在400ms-600ms之间,但有时就会报超时,抓包的话也是要3秒之后才有发送数据到微信的服务器。不知道有没有方法解决这个问题。在此先谢过,谢谢

草根总裁的主页 草根总裁 | 初学一级 | 园豆:159
提问于:2015-09-12 12:42
< >
分享
最佳答案
0

发给同一个host的连接数是有上限的,比如一般浏览器可以支持6个并发连接到同一个host,再多的连接就要等之前的完成才能开始新的。因为你看到发出去的包本身就晚了,所以很可能是由于这个限制,你可以修改一下这个设置试试。

收获园豆:30
hsdtt | 菜鸟二级 |园豆:293 | 2015-09-13 22:40

是设置  System.Net.ServicePointManager.DefaultConnectionLimit = 512;吗

草根总裁 | 园豆:159 (初学一级) | 2015-09-14 17:06

@草根总裁: 你可以改一下试试这个能否解决你的问题,如果可以就证明这个猜想是对的。因为这个是全局参数,会影响到所有的ServicePoint,你应该专门为微信服务器建一个ServicePoint。具体的,使用静态方法ServicePointManager.FindServicePoint创建,设置ConnectionLimit属性。

hsdtt | 园豆:293 (菜鸟二级) | 2015-09-15 21:59

@hsdtt: 谢谢你的回复,我按你说的去设置,结果还是一样的,我再研究研究,谢谢

草根总裁 | 园豆:159 (初学一级) | 2015-09-18 09:13

@草根总裁: 

WebRequestHandler handler = new WebRequestHandler();
handler.UseProxy = false;
HttpClient client = new HttpClient(handler);

试试这个,代理只是影响一个程序的第一次http请求。

hsdtt | 园豆:293 (菜鸟二级) | 2015-09-18 19:40

@hsdtt: 用fiddler跟踪,发现出现超时时,时间都是花在DNS的解析上,目前我的解决方案是在Hosts文件里加上IP和域名,

草根总裁 | 园豆:159 (初学一级) | 2015-10-06 11:20
其他回答(1)
0

推荐你使用 苏飞论坛的 HTTPHELPER类

道于盲 | 园豆:219 (菜鸟二级) | 2015-09-12 19:04

谢谢你,到时试试

支持(0) 反对(0) 草根总裁 | 园豆:159 (初学一级) | 2015-09-18 09:16
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册