【发布时间】:2020-01-02 15:39:08
【问题描述】:
我一直在尝试设置一个在后台运行并通过 TCP 与服务器通信的服务。我正在使用 .NET Core 设置 TCPListener,并在另一台设备上尝试通过 TCPClient 远程连接。如果我在服务之外使用它,在用户执行的程序中,它工作得很好。但是,如果我启动我的服务,我监听的端口只接收来自 127.0.0.1 的消息,而不是来自本地网络的消息。
我怀疑该服务需要一些权限才能接受网络通信,但这并不是我真正的专业领域。有什么建议吗?
没有错误信息。使用 Wireshark 我确认主机上有一个传入的 TCP 请求,但没有与我的服务建立连接。
提前谢谢o/)
编辑: 我发现如果我禁用主机 PC 上的公共防火墙,它就可以工作。但我并不真正精通阅读和解释日志。相关部分内容如下:
防火墙日志输出
Fields: date time action protocol src-ip dst-ip src-port dst-port size tcpflags tcpsyn tcpack tcpwin icmptype icmpcode info path
2019-08-29 15:43:58 DROP UDP 192.168.7.98 192.168.7.255 34638 15600 63 - - - - - - - RECEIVE
2019-08-29 15:44:01 ALLOW UDP 192.168.7.117 192.168.7.70 137 137 0 - - - - - - - SEND
2019-08-29 15:44:02 DROP TCP 192.168.7.46 192.168.7.117 49958 13000 52 S 1580866692 0 64240 - - - RECEIVE
2019-08-29 15:44:03 DROP UDP 192.168.7.62 192.168.7.255 57621 57621 72 - - - - - - - RECEIVE
2019-08-29 15:44:04 DROP UDP 192.168.7.98 192.168.7.255 54123 15600 63 - - - - - - - RECEIVE
2019-08-29 15:44:05 DROP TCP 192.168.7.46 192.168.7.117 49958 13000 52 S 1580866692 0 64240 - - - RECEIVE
2019-08-29 15:44:10 DROP UDP 192.168.7.98 192.168.7.255 58249 15600 63 - - - - - - - RECEIVE
2019-08-29 15:44:11 DROP TCP 192.168.7.46 192.168.7.117 49958 13000 52 S 1580866692 0 64240 - - - RECEIVE
(重要的是目标为 192.168.7.117:13000 的丢弃包。)有没有人知道如何阅读这些包并找出它阻止它的原因,以及如何阻止它这样做?
【问题讨论】:
-
查看服务控制面板并告诉我们该服务以什么用户身份运行
-
你能添加你的 Startup.cs 吗?
-
不要在环回 127.0.0.1 上监听。可能并不总是有效。用于端点 IP.Any。有一个可以设置不同的主机文件,因此它不起作用。此外,当您有多个网卡时,只有一个可能会将传入消息转发到 127.0.0.1。 IP.Any 监听所有网卡。
-
@CaiusJard 我尝试将服务作为 LocalService、LocalSystem 和 NetworkService 运行,但对它没有影响。如果您因为权限而询问,我尝试使用“sc sdset
D:AR(A;;GA;;;BA)(A;;GA;;;SY)(A;;GA;;; IU)S:(AU;FA;GA;;;WD)" 给它一般津贴......好吧一切(我现在已经绝望了),也没有效果。 :c -
@jdweng 我使用的 TCPListener 适用于 IP.Any,0.0.0.0:13000。使用 netstat 它也显示为这样
标签: c# .net windows service tcp