使用net tcp的WCF双工服务:“需要流安全性……”

我正在编写一项服务,允许用户注册并在事件发生时接收通知。 我正在尝试使用netTcpBinding执行此操作,但即使在本地计算机上运行时也会遇到错误。

当我尝试发送通知时,我超时,收到此错误:

http://www.w3.org/2005/08/addressing/anonymous需要Stream Security,但没有协商安全上下文。 这可能是由远程端点从其绑定中丢失StreamSecurityBindingElement引起的。

为了测试我在一个控制台中托管服务,它正在为我打开,我可以看到WSDL并在其上运行svcutil。 当我运行客户端时,尝试发送通知是在上面的错误出现时。

主机App.config:

                           

这是客户端App.config:

                                          

我省略了很多注册码,因为我现在只是想让通知正常工作。

计划是在2003 Server中的Windows服务中托管它,该服务不属于客户的域(他们的设置),客户端计算机将位于客户的域中。

编辑:

我已将绑定添加到主机的App.config:

                               

这仍然是错误,具有相同的Steam Security是必需的错误消息。 在新解决方案中尝试此应用的一小部分。

好吧,你的问题似乎是这样的:

  • 在服务器端,您使用没有参数的默认netTCP绑定 – 您不会更改任何内容。 netTCP默认使用Windows凭据进行传输级安全性

  • 但是,在您的客户端上,您明确关闭了netTCP绑定的任何安全性

所以两者不匹配,不同意做什么。

您需要关闭BOTH两端的所有安全性 – 服务器和客户端 – 或者您只需使用安全默认值(使用Windows凭据)。

我认为事实certificate这是导致你进入许多不同方向的那些可怕的错误信息之一。 上述答案对于这种情况是正确的。 我的情况不同 – 我的安全设置在客户端和服务上是相同的。

就我而言,这个链接指出了我的特殊缺陷: http : //www.netframeworkdevs.com/windows-communication-foundation-wcf/error-invoking-service-with-a-net-tcp-binding-123918.shtml 。

我的端点的服务端app.config使用bindingName作为命名绑定配置的属性…而不是bindingConfiguration 。 我认为在endpoint上甚至没有名为bindingName的属性。

所以……我的意思是这个错误意味着“有一个WCF配置错误”可能缩小到服务端配置。 啊。