C#OPC客户端无法获取服务器列表
本文关键字:服务器 列表 获取 客户端 C#OPC | 更新日期: 2023-09-27 18:27:42
在新的Windows 8 64位机器中编译C#后,在OPC客户端应用程序中获取可用服务器列表时,我开始出现以下错误。
"OpcNetApi.Com无法强制转换类型为"System"的COM对象__ComObject"到接口类型"OpcRcw.Comn.IOPCServerList2"。此操作失败,因为对IID为"{9DD0B56C-AD9E-43EE-8305-487F3188BF7A}"的接口的COM组件的QueryInterface调用由于以下错误而失败:类未注册(HRESULT中的异常:0x80040154(REGDB_E_CLASSNOTREG))。"
原因可能是什么?
引用自OPC.NET自述文件:
.NET COM互操作程序集是根据32位版本生成的代理/存根的。这意味着在上运行的任何.NET应用程序x64系统必须作为32位应用程序进行编译和运行
您好:若要解决此问题,请安装OPC.NET API OPC.NET API 2.00 Redistributable 105.1,然后安装OPC核心组件Redistributble(x64)105.1。有了这个,您可以连接到运行在32位的OPC服务器,而不是运行在64位的客户端。
请不要忘记,您的项目中引用的可再分发内容(OPC.NET API OPC.NET API 2.00可再分发信息、OPC核心组件可再分发数据)和库(OpcNetApi.dll、OpcNetApi.Com.dll、OpcNetApi.Xml.dll…)必须是相同的版本。
我认为唯一的问题是你试图用不同的用户和密码连接到远程机器。你必须在远程机器中创建与本地机器用户名和密码相同的当前用户,然后你必须在远端机器上配置"组件服务"->控制台根目录->组件服务->计算机->Dcom配置->OpcEnum设置,并在属性->安全我的问题通过这种方式解决祝好运