本文接着上一篇的踩坑笔记一,在重新开发ChinaPay的支付过程中,又遇到新的问题,将支付模块发布到IIS服务器上,发现竟然无法使用,在提交支付订单的时候会提示:检索 COM 类工厂中 CLSID 为 {522E44BF-7BC9-4135-B5EB-8CC154144B0D} 的组件失败,原因是出现以下错误: 80040154 没有注册类 (异常来自 HRESULT:0x80040154 (REGDB_E_CLASSNOTREG))。
在排查的过程中发现,开发环境中是没有任何问题的,生成也没有任何警告和错误,但是一旦发布就无法使用,所以问题应该与发布环境有关。
结合上次ChinaPay的踩坑经验,怀疑依然与银联在线提供的dll兼容性有关,后通过设置问题项目的应用程序池解决了问题,步骤如下:找到支付项目的应用程序池,打开高级设置,将启用32位应用程序设置为True。
2017年01月13号更新
最近服务器再次进行迁移,又出现了这个问题,在解决了兼容性后问题依然存在,想起忘记注册某个关键DLL。调用银联电子支付的功能必须要先使用regsvr32命令注册Chinapay.dll(我使用ASP.NET只要注册这一个),如果使用的是ASP或者PHP语言的,还要注册CPNPC.DLL。注册成功后支付功能就可以正常使用了。注意netpay.dll、ChinaPay.dll和CPNPC.DLL这3个DLL文件要放在一个目录下。
官方文档关键说明:
作者:十有三
出处:https://shiyousan.com/post/636033939576137476
版权声明:本文采用知识共享许可协议:署名-相同方式共享 4.0 国际(CC BY-SA 4.0)。欢迎转载本文,转载请声明出处或保留此段声明。