首页 新闻 会员 周边

微信支付 统一下单 生成预订单 post微信服务器特别慢

0
悬赏园豆:200 [待解决问题]

private string Post(string xml, string url)
{
System.GC.Collect();//垃圾回收,回收没有正常关闭的http连接

string result = "";//返回结果
HttpWebRequest request = null;
HttpWebResponse response = null;
HttpWebRequest.DefaultWebProxy = null;
ServicePointManager.DefaultConnectionLimit = 20; //设置最大连接数
try
{
/***************************************************************
* 下面设置HttpWebRequest的相关属性
* ************************************************************/
request = (HttpWebRequest)WebRequest.Create(url);
request.Proxy = null;
request.Method = "POST";
request.KeepAlive = false;
request.ServicePoint.Expect100Continue = false;
request.AllowWriteStreamBuffering = false;
request.AllowAutoRedirect = true;
request.AutomaticDecompression = DecompressionMethods.GZip;


//设置POST的数据类型和长度
request.ContentType = "text/xml";
request.SendChunked = true; //分段发送

byte[] data = System.Text.Encoding.UTF8.GetBytes(xml);
//request.ContentLength = data.Length;

//往服务器写入数据
var start = DateTime.Now;
using (Stream reqStream = request.GetRequestStream())
{
reqStream.Write(data, 0, data.Length);
}
var end = DateTime.Now;
int timeCost = (int)((end - start).TotalMilliseconds);
LogHelper.Info("Post", "GetRequestStream时间花费2015-12-27:" + timeCost.ToString());
//获取服务端返回
response = (HttpWebResponse)request.GetResponse();
//获取服务端返回数据
StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
result = sr.ReadToEnd().Trim();
sr.Close();
}
catch (System.Threading.ThreadAbortException e)
{
LogHelper.Debug("HttpService", "Thread - caught ThreadAbortException - resetting.Exception message: " + e.Message + "");
System.Threading.Thread.ResetAbort();
}
catch (WebException e)
{
LogHelper.Debug("HttpService", e.Message);
if (e.Status == WebExceptionStatus.ProtocolError)
{
LogHelper.Debug("HttpService", "StatusCode:" + ((HttpWebResponse)e.Response).StatusCode);
LogHelper.Debug("HttpService", "StatusDescription:" + ((HttpWebResponse)e.Response).StatusDescription);
}
}
catch (Exception e)
{
LogHelper.Debug("HttpService", "StatusCode:" + e.ToString());
}
finally
{
//关闭连接和流
if (response != null)
{
response.Close();
LogHelper.Info("info", "response.Close();");
}
if (request != null)
{
request.Abort();
LogHelper.Info("info", "request.Abort();");
}
}
return result;
}

 

 

LogHelper.Info("Post", "GetRequestStream时间花费2015-12-27:" + timeCost.ToString());

这个地方检测了GetRequestStream 的时间   第一次很慢 然后在访问就快乐 过一段时间又慢了

Claff的主页 Claff | 初学一级 | 园豆:2
提问于:2015-12-27 18:45
< >
分享
所有回答(3)
0

request.KeepAlive = false;

改为

request.KeepAlive = true;

试试

CodeHsu | 园豆:5468 (大侠五级) | 2015-12-27 21:55

刚找出原因了 这段代码 在本地(win7系统) 是正常的  到服务器(winserver2012)上就 就 变得很慢了  知道什么原因吗

支持(0) 反对(0) Claff | 园豆:2 (初学一级) | 2015-12-27 22:05

@Claff: 你看下服务器的配置和网络有没有问题。

支持(0) 反对(0) CodeHsu | 园豆:5468 (大侠五级) | 2015-12-27 22:10

@SeayXu:  关键就在这里  不知道服务器哪里的配置问题  服务器的IIS也是正常的 

支持(0) 反对(0) Claff | 园豆:2 (初学一级) | 2015-12-27 22:12

@Claff: 测试下网络是否稳定

支持(0) 反对(0) CodeHsu | 园豆:5468 (大侠五级) | 2015-12-28 09:25

@Claff: 你的微信支付jsapi哪儿,好了吗,原来你不是说post微信服务器慢吗,怎么解决的。

支持(0) 反对(0) liuchuanyou | 园豆:200 (初学一级) | 2016-04-13 11:02

@Claff: 请教下:最后找出啥原因了吗?我也遇到同样的问题了...

支持(0) 反对(0) tangwei1987 | 园豆:200 (初学一级) | 2016-07-26 10:12
0

1.在每一行打上执行时间监视,找出慢的代码,如果是在发送请求的时慢,那就像楼上说的检查网络。在服务器上ping微信接口服务器

2.推荐使用webapiclient,用了都说好

3.开头的GC回收完完全全是画蛇添足

吴瑞祥 | 园豆:29449 (高人七级) | 2015-12-28 10:22
0

我能问下做微信支付,生成订单的时候,post的值接收不到是什么回事么

natureless | 园豆:11 (初学一级) | 2016-08-30 13:52
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册