新闻建站cms系统、政府cms系统定制开发

广州网站建设公司-阅速公司

asp.net新闻发布系统、报纸数字报系统方案
/
http://www.ysneo.com/
广州网站建设公司
您当前位置:首页>网站技术

网站技术

支付宝异步接口和同步接口验签失败:AlipaySignature.RSACheckV1一直为false的原因

发布时间:2020/1/12 10:23:45  作者:Admin  阅读:3041  

广告:

原因:不同的服务器不一样,有的服务器正常,有的服务器一直为false,有下面解决方案

bool flag = AlipaySignature.RSACheckV1(sArray, config.alipay_public_key, config.charset, config.sign_type, false);

首先把 AopSdk 项目文件的 AlipaySignature.cs

RSACheckContent(string signContent, string sign, string publicKeyPem, string charset, string signType, bool keyFromFile)

catch 
{
return false;
}
改成如下面:
catch (Exception ex) //20200110 改动更新 加上 Exception ex
{
throw (ex);
// return false;
}

这样就可以看到错误的原因。

然后程序提示下面错误:

事件代码: 3005 
事件消息: 发生了未处理的异常。 
事件时间: 2020/1/11 14:46:54 
事件时间(UTC): 2020/1/11 6:46:54 
事件 ID: 2e48baa260194296a0646eb3355c505d 
事件序列: 6 
事件匹配项: 1 
事件详细信息代码: 0 

应用程序信息: 
应用程序域: /LM/W3SVC/19/ROOT-2-132231988145201111 
信任级别: Full 
应用程序虚拟路径: / 
应用程序路径: D:\webwww2016\xiyaoheweb2016\testweb\ 
计算机名: WINDOWS2012R2 

进程信息: 
进程 ID: 4244 
进程名: w3wp.exe 
帐户名: IIS APPPOOL\alipay 

异常信息: 
异常类型: CryptographicException 
异常消息: 系统找不到指定的文件。


请求信息: 
请求 URL: http://hong.ysneo.com/test.aspx 
请求路径: /test.aspx 
用户主机地址: 123.59.44.206 
用户: 
是否已经过身份验证: False 
身份验证类型: 
线程帐户名: IIS APPPOOL\alipay 

线程信息: 
线程 ID: 3 
线程帐户名: IIS APPPOOL\alipay 
是否正在模拟: False 
堆栈跟踪: 在 Aop.Api.Util.AlipaySignature.RSACheckContent(String signContent, String sign, String publicKeyPem, String charset, String signType, Boolean keyFromFile) 位置 E:\aspnet2.0\nyweb_jia\支付宝支付\alipay-sdk-NET20170615-xiyaohe\Util\AlipaySignature.cs:行号 311
在 Aop.Api.Util.AlipaySignature.RSACheckV1Test(String sign, String signContent, String publicKeyPem, String charset, String signType, Boolean keyFromFile) 位置 E:\aspnet2.0\nyweb_jia\支付宝支付\alipay-sdk-NET20170615-xiyaohe\Util\AlipaySignature.cs:行号 175
在 Test.Page_Load(Object sender, EventArgs e)
在 System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e)
在 System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e)
在 System.Web.UI.Control.OnLoad(EventArgs e)
在 System.Web.UI.Control.LoadRecursive()
在 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

解决方法:(3选一)

1. 打开IIS7.5设置,应用程序池--》找到自己的应用程序(网站名称)-->右键-->高级设置-->在进程模型区域,有个-用户加载配置文件-选择后面为true.这个问题就解决了。

2 RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
改成:
CspParameters RSAParams = new CspParameters(); // 20200111
RSAParams.Flags = CspProviderFlags.UseMachineKeyStore;//
System.Security.Cryptography.RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(1024, RSAParams);//

3.
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); 改成
RSACryptoServiceProvider.UseMachineKeyStore = true; //new add 添加这一行
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();

广告:

相关文章
支付宝
RSACheckV1
cms新闻系统购买咨询
扫描关注 广州阅速软件科技有限公司
扫描关注 广州阅速科技