net.tcp连接上的Windows服务失败,但控制台应用程序工作正常

时间:2017-08-23 18:04:47

标签: c# service dns windows-services net.tcp

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

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

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

更新

看起来DNS设置正确,因为我可以ping其他服务器及其自身。控制台和服务器上都使用了相同的连接字符串,我从服务中获得的唯一错误消息如下图所示。

enter image description here

1 个答案:

答案 0 :(得分:2)

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

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

检查...... 点击开始 - >运行 - > services.msc 查看列"登录为" ...如果它与登录到该工作站的用户不同,请将其更改为该帐户。