Windows 服务不支持 OpcRcw.Da.IOPCServer 接口

Posted

技术标签:

【中文标题】Windows 服务不支持 OpcRcw.Da.IOPCServer 接口【英文标题】:Windows Service does not support OpcRcw.Da.IOPCServer interface 【发布时间】:2020-08-12 06:49:33 【问题描述】:

我正在编写一个程序,用于从 mysql 数据库和 OPC DA 服务器读取数据并将数据写入其中。我已经使用几个 WCF 服务在 C# 中开发了整个应用程序,并且我测试了每个服务的每个功能,它们工作正常。

我编写了一个控制台应用程序,它调用这两种服务(MySQL 和 OPC DA)并且它可以工作。然后我用相同的代码编写了一个 Windows 服务,MySQL WCF 服务的工作方式相同(如预期的那样),但 OPC WCF 服务没有,连接到 OPC 服务器时出现以下错误:

*NotSupportedException: COM 服务器不支持接口'OpcRcw.Da.IOPCServer'。

此问题可能由以下原因引起:

代理/存根安装不正确。 de DCOM 安全设置问题 个人防火墙*

这些原因都不适用,因为 OPC 服务器和客户端(我的应用程序)在同一台机器上运行。该服务最初配置为作为 LocalSystem 运行,但以防万一它是由于用户权限,我也尝试使用域管理员。它也没有工作。

WCF 服务之间的连接使用 TCP 绑定。我现在不知道该看什么,因为控制台应用程序和服务都具有相同的代码并以高权限运行。

欢迎任何想法!谢谢!

【问题讨论】:

可能与运行 Windows 服务的凭据有关。尝试使用用户凭据而不是网络等内置凭据。 如果您的控制台应用程序在 32 位进程中运行而服务在 64 位进程中运行,反之亦然,问题可能在于没有为 32 位或 64 位安装代理/存根-bit 位。 @ZbynekZ,这就是问题所在。我查看了所有项目的编译选项,并将它们更改为 32 位和任何 CPU,它工作正常。谢谢您的帮助!!如果您想将其作为答案发送,我将检查该消息作为解决方案。 【参考方案1】:

如果您的控制台应用程序在 32 位进程中运行而服务在 64 位进程中运行,反之亦然,问题可能在于代理/存根未安装 32 位或 64 位位。

【讨论】:

以上是关于Windows 服务不支持 OpcRcw.Da.IOPCServer 接口的主要内容,如果未能解决你的问题,请参考以下文章

Windows服务:托管兼容模式不支持编辑和继续

远程连接Windows云服务器报错:出现身份验证错误,要求的函数不受支持

远程服务器提示:身份验证错误 要求的函数不受支持解决办法汇总-- Windows远程桌面连接

System.ServiceModel 错误在 ASP.NET Core API 中使用嵌入在 Windows 服务中的 WCF 时不支持操作

cmd 执行Dcpromo错误:在该 SKU 上不支持 Active Directory 域服务安装向导,Windows Server 2008 R2 Enterprise 配置AD(Active D

laravel自定义缓存memcache(自带memcached,windows不支持)