Windows-net.tcp 连接时服务失败,但控制台应用程序运行正常

Windows-Service fails on net.tcp connection but console app works fine

我构建了一个从 SQL 服务器导入和处理数据并将其输入到 SYSPRO 的服务。作为控制台应用程序,一切都在本地机器和服务器上完美运行。当我将控制台应用程序变成一项服务时,它在给它正确的登录后在我的机器上运行完美。当我第一次将服务放到服务器上时,当我尝试登录 SYSPRO 客户端时,即使登录正确,它也会给我一个 DNS 错误。

private SYSPROWCFServicesPrimitiveClient eNetSession = 
new SYSPROWCFServicesPrimitiveClient("net.tcp://{serverName}:20000/SYSPROWCFService/Soap", 
SYSPROWCFBinding.NetTcp);

我将服务器名称更改为 localhost,其地址和本地地址不再返回 DNS 错误,但不会初始化 SYSPRO 客户端。然而,它与位于不同服务器上的 SQL 服务器没有问题。我认为它是连接字符串,但不确定我做错了什么,因为连接字符串作为控制台应用程序在服务器上工作得很好。我唯一的其他猜测是该服务可能无法访问 net.tcp。有什么想法吗?

更新

看起来 DNS 设置正确,因为我可以 ping 另一台服务器和它自己。控制台和服务器都使用相同的连接字符串,我从服务返回的唯一错误消息如下图所示。

听起来像是安全上下文问题。检查 windows 服务配置使用的帐户(本地系统、网络服务等)。尝试将帐户更改为 运行 控制台应用程序的用户。

控制台应用程序默认 运行 使用登录用户的帐户。 Windows 另一方面,服务需要正确配置,因为它没有使用当前用户凭据安装。

检查... 点击开始->运行->services.msc 看那一栏"Log On As"...如果和登陆站的用户不一样,就换成那个账号。