2010-02-17 36 views
1

我正在努力解决与名称解析有关的WCF问题 - 或类似的问题。当我通过Web服务器上的Web应用程序在应用程序服务器上使用wcf服务(netTcpBinding)时,它不起作用。好吧,它在大多数情况下都不起作用。如果您使用本地主机或127.0.0.1从Web服务器本身访问Web应用程序,则它可以工作。但是,通过其他客户端机器通过Web服务器访问它或使用主机名或IP地址在Web服务器上本地访问Web应用程序不起作用。在这两种情况下,您都会遇到套接字连接中止错误。NetTcpBinding具有远程访问和传输安全性的wcf服务?

更令人感兴趣的是,将所有安全性切换为“无”而非“传输”可以解决问题。

我的问题是,是否有可能使用您的Web服务器访问wcf服务,仍然使用传输安全性?或者这是一个错误/设计的行为?

非常感谢任何见解, 史蒂夫

回答

2
  1. 默认NetTcpBinding安全选项是Kerberos/Windows身份验证。如果你的客户和服务不在同一个域中,它将不起作用。您可能需要查看基于证书的身份验证。

  2. 如果您的服务在域帐户下运行,请尝试将其更改为LocalService或NetworkService以查看是否可以解决问题。

1

交通运输安全通常只能点至点 - 当客户端直接连接到服务器。

如果您有来自互联网的客户,您无法控制他们经过多少中间跳跃 - 因此,即使运行安全性,运输安全性很可能根本不起作用,例如,您的消息可能会受到保护,无法从客户端跳到第一跳,从最后一跳跳到您的服务器 - 但不在跳数之间。

对于互联网场景,通常,传输安全性不是有效选项 - 对这些情况使用消息安全性。

我不是100%确定为什么连接根本无法工作 - 但无论如何,如果您不在公司防火墙后面,我不会在这种情况下使用netTcp和传输安全性。

请问您可以将您的服务器端配置(<system.serviceModel>中的任何内容)添加到您的问题中,以了解如何设置传输安全性?

+0

Mi Marc感谢您的帮助。这是有道理的,但我会认为从技术角度来说,保护web服务器和wcf之间的通信应该是可以的 - 因为我无论如何都控制每一跳(作为多层应用程序的一部分)。当我再次访问时,我会尽快发布一些代码/标记。 – MrCraze 2010-02-17 12:13:01