gpt4 book ai didi

wcf - Mono WCF NetTcp 服务一次只需要一个客户端

转载 作者:行者123 更新时间:2023-12-04 15:27:46 25 4
gpt4 key购买 nike

在尝试在 Mono 中构建客户端-服务器 WCF 应用程序时,我们遇到了一些问题。
将其简化为一个简单的示例,我们发现该服务一次仅接受一个客户端。如果另一个客户端尝试连接,它会挂起,直到第一个客户端断开连接。

只需更改为 BasicHttpBinding 即可修复它,但我们需要 NetTcpBinding 进行双工通信。如果在 MS .NET 下编译也不会出现此问题。

编辑:我怀疑(也不希望)Mono 不支持我正在尝试做的事情。据我所知,在这种情况下,Mono 代码通常会抛出 NotImplementedExceptions。我正在使用 Mono v2.6.4

这是在我们的基本场景中打开服务的方式:

public static void Main (string[] args)
{
var binding = new NetTcpBinding ();
binding.Security.Mode = SecurityMode.None;
var address = new Uri ("net.tcp://localhost:8080");
var host = new ServiceHost (typeof(Hello));
host.AddServiceEndpoint (typeof(IHello), binding, address);

ServiceThrottlingBehavior behavior = new ServiceThrottlingBehavior ()
{
MaxConcurrentCalls = 100,
MaxConcurrentSessions = 100,
MaxConcurrentInstances = 100
};
host.Description.Behaviors.Add (behavior);

host.Open ();
Console.ReadLine ();
host.Close ();

}

客户端 channel 是这样获取的:
var binding = new NetTcpBinding ();
binding.Security.Mode = SecurityMode.None;
var address = new EndpointAddress ("net.tcp://localhost:8080/");
var client = new ChannelFactory<IHello> (binding, address).CreateChannel ();

据我所知,这是一个 Simplex 连接,不是吗?

契约(Contract)很简单:
[ServiceContract]
public interface IHello
{

[OperationContract]
string Greet (string name);
}

服务实现没有 ServiceModel 标签或属性。

我会根据需要更新详细信息。

最佳答案

我已经玩过这个了,它肯定看起来像一个 Mono 错误。

我目前正在移植一个 WCF 应用程序以在 Mono 中运行。我玩过一些 NetTcpBinding 的东西,但我没有尝试过这种场景(多个连接到 Mono 托管的服务主机)。但是现在我尝试了一下,我可以在 2.6 和最新的每日包中进行复制。

但是,它在 .NET 中确实有效。 Mono 和 .NET 之间的任何行为差异都被归类为错误。你应该用一个测试用例将它记录在 Bugzilla 上,我也会在 Mono 新闻列表中发布。

祝你好运。

关于wcf - Mono WCF NetTcp 服务一次只需要一个客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2944293/

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