【问题标题】:Windows Service does not support OpcRcw.Da.IOPCServer interfaceWindows 服务不支持 OpcRcw.Da.IOPCServer 接口
【发布时间】: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,它工作正常。谢谢您的帮助!!如果您想将其作为答案发送,我将检查该消息作为解决方案。

标签: c# wcf service opc


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2022-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-04
    • 2020-07-23
    • 2012-03-08
    • 2021-12-29
    • 1970-01-01
    相关资源
    最近更新 更多