小编ven*_*ene的帖子

Mono WCF NetTcp服务一次只能使用一个客户端

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

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

编辑:我怀疑(并且希望不是)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 ();

}
Run Code Online (Sandbox Code Playgroud)

客户端通道的获取方式如下:

var binding = new NetTcpBinding ();
binding.Security.Mode = SecurityMode.None;
var address = new …
Run Code Online (Sandbox Code Playgroud)

mono wcf nettcpbinding

6
推荐指数
1
解决办法
2562
查看次数

WPF WindowsFormsHost不会冒泡未处理的关键手势

好吧,我不确定我是否理解这应该如何工作,但在我的应用程序中,我将一个关键手势(Ctrl + K)绑定到RoutedCommand.无论我在哪里专注于我的应用程序,键组合都有效,除非我在包含Web浏览器控件的WindowsFormsHost中使用它.我尝试捕获Web浏览器控件的PreviewKeyDown事件并将IsInputKey设置为false.理论上,这应该导致主持人考虑未经处理的关键手势并将其向上发送,但这不会发生.

更新:

如果我覆盖控件的bool IsInputKey(Keys keyData)并返回false,它将起作用并且命令将按原样执行.

也许我处理PreviewKeyDown的方式有问题?

private void browser_PreviewKeyDown (object sender, PreviewKeyDownEventArgs e)
{
    e.IsInputKey = false;
}
Run Code Online (Sandbox Code Playgroud)

我希望这能让我从主窗口中捕获任何组合键.我宁愿通过事件处理来解决这个问题而不是扩展控件......

wpf winforms-interop winforms

5
推荐指数
1
解决办法
1690
查看次数

标签 统计

mono ×1

nettcpbinding ×1

wcf ×1

winforms ×1

winforms-interop ×1

wpf ×1