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

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

我构建了一个从 SQL Server 导入和处理数据并将其输入到 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

最佳答案

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

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

要检查... 单击开始->运行->services.msc 查看“登录身份”一栏...如果与登录到该站的用户不同,请将其更改为该帐户。

关于c# - Windows 服务在 net.tcp 连接上失败,但控制台应用程序工作正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45846610/

相关文章:

c# - System.Array 不包含 ToArray 的定义

c# - 为什么我需要在 C# 类中使用虚拟修饰符?

java - 我的 Java IDE 的域模型

java - 如何在 Java 中获取 DatagramSocket (UDP) 的本地地址

python - AWS Python 开发工具包 | Route 53 - 删除资源记录

c# - 结构比 SortedSet 更快地添加 1-by-1,然后从末尾访问少量项目

来自 TagLib 开销的 Grails 服务调用

angularjs - 服务和工厂可以互换使用吗?

Android服务保持活跃

c# - WPF 桌面应用程序,Windows 10 Notification Toast 2016(UWP 社区工具包)