runliuv

runliuv@cnblogs

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

微信退款时遇到:基础连接已经关闭 连接被意外关闭。

服务器环境:WIN SERVER 2008 R2.  WINDOWS服务承载的WCF服务,基于.NET FRAMEWORK 3.5.

第一笔交易的退款是正常的,第二笔交易的退款就提示这个错误。重新导入证书后正常。再做一笔退款时还是报错。反复如此。

同一环境另一证书一切正常。。。。。。。。

问题代码:

 

HttpWebRequest req = (HttpWebRequest)WebRequest.Create(strUrl);

req.KeepAlive = false;

X509Certificate cer = new X509Certificate(certFullName, password);

这段代码是微信官方DEMO里的,如下图:

 

解决方案:

将X509Certificate  换成 X509Certificate2 。 

 

X509Certificate2 cer = new X509Certificate2(certFullName, password,
X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.Exportable);

更新下程序,测试了两个证书的四次退款均正常(每证书两次)。

 

额外资料:

在微软文档中:https://msdn.microsoft.com/zh-cn/library/system.security.cryptography.x509certificates.x509certificate(v=vs.90).aspx

有提到:

"ASN.1 DER 是此类支持的唯一证书格式。

在大多数情况下,您应该使用 X509Certificate2 类。"

 

posted on 2016-07-07 18:08  runliuv  阅读(4412)  评论(0编辑  收藏  举报