连接远程服务器时出现 OPC HRESULT E_FAIL 错误

3

我正在使用Kepware KEPServerEX 5.15作为我的OPC服务器,并使用.NET中的OPC DA Automation Wrapper 2.02进行通信。

当我的应用程序和KEPServerEX都安装在同一台机器上时,一切正常,但是当我将应用程序移动到另一台机器上时,任何操作都会收到HRESULT E_FAIL异常。

我还在第二台机器上安装了KEPServerEX,当本地指向它时,应用程序可以工作。我还尝试从第一台机器运行应用程序,指向第二个服务器,仍然收到HRESULT E_FAIL异常。

我还禁用了两台机器上的防火墙,没有效果,并启用了网络DTC访问,并在本地DTC安全属性中设置不需要身份验证。

总之,当我尝试使用远程OPC服务器时,应用程序会抛出HRESULT E_FAIL异常。

在最简单的示例中,我正在执行以下操作:

    Dim opcServer As New OPCAutomation.OPCServer
    Dim opcServerEnum As IEnumerable = CType(opcServer.GetOPCServers(hostAddress), IEnumerable)

编辑: 在系统事件日志中找到了以下内容:

当尝试激活服务器时,DCOM从计算机10.24.7.28收到错误代码为“2147944122”的错误: {13486D51-4821-11D2-A494-3CB306C10000}


这个错误发生的主要原因是客户端由于防火墙无法访问服务器上的OPCENUM.exe。需要进行很多设置才能远程启用此功能。如果仍然无法解决您的问题或有任何疑问,请阅读我的答案并让我知道。 - Vishweshwar Kapse
E_FAIL只是教师对错误报告代码质量的评分。它并不意味着比“没用,不知道为什么,不是我的问题”更多。当然,事件日志条目会告诉你更多信息。将大十进制数转换为十六进制,你会发现它是一个包装的Windows错误代码。1722,RPC_S_SERVER_UNAVAILABLE,“RPC服务器不可用”。这也不是最好的结果,但你现在确实知道OPC服务器没有在那台机器上正确安装。 - Hans Passant
他刚刚提到,在他将客户端从本地机器转移到远程机器时,OPC服务器在本地机器上测试时运行良好,但现在显示RPC不可用。这是因为他当前正在测试的客户端机器上没有DCOM设置,必须遵循我的答案才能使其正常工作。 - Vishweshwar Kapse
1个回答

2

OPC使用DCOM进行通信,您需要执行以下步骤来解决此问题。

  1. 通过从Windows“开始”菜单中选择“运行”并键入dcomcnfg.exe并单击“确定”来运行DCOM配置实用程序。

2.展开组件服务、计算机并右键单击MyComputer并选择属性

  1. 选择默认属性选项卡并检查“在此计算机上启用分布式COM”。默认身份验证级别应为连接,而默认模拟级别应为标识。 注意:提供参考跟踪的附加安全性应取消选中。

  2. 现在选择COM安全选项卡,在访问权限部分单击编辑默认按钮,单击添加…按钮并添加用户名(与服务器上的用户名完全相同的新创建用户名)。添加新用户后,选择它并在下面的框中选中复选框以启用(允许)本地访问和远程访问。

  3. 对于初始测试目的,请在授予访问列表中包括所有人。

  4. 在托管服务器的计算机上,将OpcEnum.exe添加到防火墙例外列表中

  5. 在客户端计算机的防火墙上允许端口135的传入连接

注意:对于初始测试,请在服务器和客户端上都禁用防火墙.. :)

  1. 记下运行opc服务器的Windows用户帐户的用户ID和密码,并在远程计算机上创建相同的用户名和帐户 (这是为了建立两台计算机之间的信任)

完成后,您应该能够远程访问OPC服务器。


看起来已经解决了问题,我现在可以远程枚举服务器,但是当我尝试连接时,出现了不同的错误:HRESULT:0x80040202,位于OPCAutomation.IOPCAutoServer.Connect(String ProdID, Object NOde)。 - apc
我假设客户端防火墙上的端口135(TCP)未开放,请在客户机上设置防火墙规则以允许传入流量。如果这样做无法解决问题,请发布异常和内部异常,以便我可以帮助您找出发生了什么。 - Vishweshwar Kapse
我们无法解决这个问题。事实证明,我们无法在最终系统上进行直接连接(运行Windows XP嵌入式版并具有DCOM限制),因此我没有进一步研究这个问题。我们计划做的是在运行第二个KepwareExServer副本的服务器上运行应用程序,并使用UA隧道将其链接到主服务器。感谢您的所有帮助。 - apc

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接