gpt4 book ai didi

wcf - 启用传输安全性后,Mono WCF 客户端无法与 .NET WCF 服务器通信

转载 作者:行者123 更新时间:2023-12-05 01:11:42 24 4
gpt4 key购买 nike

这是我运行 WCF 主机的方式:

var baseAddress = new Uri("net.tcp://localhost:2222/blah");

var binding = new NetTcpBinding();
binding.Security.Mode = SecurityMode.Transport;

var sh = new ServiceHost(typeof(MyServiceImpl), baseAddress);
sh.AddServiceEndpoint(typeof(IMyService), binding, baseAddress);
sh.Open();

这是我的客户:
Uri uri = new Uri("net.tcp://localhost:2222/blah");
var address = new EndpointAddress(uri);
var binding = new NetTcpBinding();
binding.Security.Mode = SecurityMode.Transport;
var client = new MyServiceClient(binding, address);
client.Open();

当我使用 Mono 2.10 运行时执行客户端和服务器时,一切正常。但是当服务器在 .NET 4.0 上运行时,我得到一个 System.IO.IOException: Read failure ---> System.Exception: An existing connection was forcibly closed by the remote host .我还通过 binding.Security.Mode = SecurityMode.None 验证了这一点一切正常。我是否有可能以某种方式使这两个运行时与正常工作的安全性互操作?

最佳答案

不幸的是,支持 NetTcpBinding在 Mono 中非常有限,它不支持任何类型的安全性。

如果只看NetTcpBinding.cs的出处,看起来确实如此,但是如果您查看实际的绑定(bind)元素,您会看到很多未实现的方法。

实际上,几天前我在开发新的 WCF 配置系统时遇到了同样的问题,想要获得 NetTcpBinding与安全合作,当我调查它为什么不工作时,我意识到没有实现太多,所以让它工作可能是一项更大的任务。

另请注意,默认情况下,NetTcpBinding使用 WindowsStreamSecurityBindingElement - 不幸的是,我找不到任何关于底层传输机制的文档。

使用BasicHttpBinding或新的 BasicHttpsBinding如果您使用的是 .NET 4.5(它也将很快在 MonoTouch 中可用)。

关于wcf - 启用传输安全性后,Mono WCF 客户端无法与 .NET WCF 服务器通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14470887/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com