域服务器和域外客户端中的 net.tcp wcf 服务(托管 Windows 服务)

Posted

技术标签:

【中文标题】域服务器和域外客户端中的 net.tcp wcf 服务(托管 Windows 服务)【英文标题】:net.tcp wcf service (windows service hosted) in domain server and client outside of domain 【发布时间】:2019-04-13 01:56:38 【问题描述】:

我有一个托管在 Windows 服务和一个 wpf 客户端的 wcf 服务(带有 net.tcp 绑定)。当我在公司域外的服务器上运行该服务时,它运行良好,问题是当我将服务托管在公司域内的服务器中,并尝试在公司域外的客户端中运行 wpf 应用程序时。 我得到同样的错误,“套接字连接被中止......” 我尝试使用安全模式无、传输和相同的结果。 我的问题是,这样做的正确方法是什么?我的意思是在域服务器中托管 wcf net TCP 服务并从域外的客户端调用它?

非常感谢!

【问题讨论】:

您确定您的公司防火墙允许任意客户端直接调用您的网络吗? 是的,另一个网络是进程网络。服务器也可以访问公司网络和流程网络。 【参考方案1】:

我将绑定从 net.tcp 更改为 wshttp,服务工作正常! 具有公司域的服务器和不具有公司域的客户端 问题是我需要使用 net.tcp 来完成这项工作

【讨论】:

不同的应用场景有不同的安全策略、认证、授权。我们在内网应用场景中使用Nettcpbinding。考虑到互联网的不安全性。我们使用带有加密和身份验证模式的 Wshttpbinding。 codeproject.com/articles/431291/…【参考方案2】:

如果您没有明确说明,Windows 域和 DNS 都与 WCF/TCP 无关。

假设您提供的地址实际上指向您托管服务的 PC(因此没有本地 IP 地址),并且中间没有任何东西(如防火墙)阻止连接,它应该可以工作。

正确的方法是确保客户端和服务器可以相互通信。如果是不同的网络,您将需要NAT,如果是公司网络,我会很惊讶地看到您不需要配置firewall。

第一步,尝试从您的客户端机器ping您的目标机器。

【讨论】:

机器之间的通信正常,服务器有2个网络,公司有公司的防火墙和本地进程网络。本地进程网络是一个没有防火墙的内部网络 我猜你需要发布一个网络设置和你的确切配置。

以上是关于域服务器和域外客户端中的 net.tcp wcf 服务(托管 Windows 服务)的主要内容,如果未能解决你的问题,请参考以下文章

除非客户端和服务器使用相同的 Windows 身份,否则带有 sspi 的 WCF Net.tcp 会失败

奇怪的 WCF net.tcp 异常

如何将基于套接字的客户端与 WCF (net.tcp) 服务一起使用?

在域外访问 SelfHosted WCF 服务

在 WCF 的添加服务引用中找不到 net.tcp 端点?

WCF over net.tcp 与安全模式 none 给出异常