【发布时间】: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,它工作正常。谢谢您的帮助!!如果您想将其作为答案发送,我将检查该消息作为解决方案。