Моно сервис WCF NetTcp берет только один клиент за один раз

При попытке создать приложение WCF клиент-сервер в Моно мы столкнулись с некоторыми проблемами. Сокращение его только к пустому примеру, мы нашли, что сервис только принимает один клиент за один раз. Если другой клиент пытается соединиться, это зависает до первых разъединений.

Просто изменение на BasicHttpBinding фиксирует его, но нам нужен NetTcpBinding для дуплексной коммуникации. Также проблема не появляется, если скомпилировано под MS.NET.

Править: Я сомневаюсь (и надежда не), что Моно не поддерживает то, что я пытаюсь сделать. Моно код обычно бросает NotImplementedExceptions в такие случаи насколько я заметил. Я использую Моно 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 ();

}

Клиентский канал получен как это:

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 ();

Насколько я знаю, что это - Симплексное соединение, не так ли?

Контракт просто:

[ServiceContract]
public interface IHello
{

    [OperationContract]
    string Greet (string name);
}

Реализация услуги не имеет никаких тегов ServiceModel или атрибутов.

Я обновлю с деталями как требуется.

6
задан vene 31 May 2010 в 16:50
поделиться

2 ответа

Я немного поигрался с этим, и это определенно похоже на ошибку Mono.

В данный момент я портирую приложение WCF для работы в Mono. Я играл с некоторыми вещами NetTcpBinding, но я не пробовал этот сценарий (несколько подключений к хосту службы, размещенному на одном сервере). Однако сейчас я пробую это, я могу воспроизвести - как в версии 2.6, так и в последнем ежедневном пакете.

Однако это работает в .NET. Любое различие в поведении Mono и .NET считается ошибкой. Вы должны зарегистрировать его в Bugzilla с тестовым примером, я бы также разместил его в списке новостей Mono.

Удачи.

3
ответ дан 17 December 2019 в 07:01
поделиться

Определенно ошибка. Мне интересно, была ли версия, которая работала правильно ...

Я разместил ее на Novell Bugzilla , если вас интересует ее прогресс.

1
ответ дан 17 December 2019 в 07:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: