Обратные вызовы WCF часто ломаются - PullRequest
0 голосов
/ 22 мая 2010

У меня возникли некоторые проблемы с механизмом обратного вызова WCF. Иногда они работают, но большую часть времени не работают.

У меня действительно простой интерфейс для реализации обратных вызовов:

public interface IClientCallback {
  [OperationContract]
  void Log(string content);
}

Затем я связываю этот интерфейс с классом на клиенте:

[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)] [ServiceContract]
internal sealed class ClientCallback : IClientCallback {
  public void Log(String content){
    Console.Write(content);
  }
}

И на клиенте я наконец подключаюсь к серверу:

NetTcpBinding tcpbinding = new NetTcpBinding(SecurityMode.Transport);
EndpointAddress endpoint = new EndpointAddress("net.tcp://127.0.0.1:1337");
ClientCallback callback= new ClientCallback();
DuplexChannelFactory<IServer> factory = new DuplexChannelFactory<IServer>(callback,tcpbinding, endpoint);
factory.Open();
_connection = factory.CreateChannel();
((ICommunicationObject)_connection).Faulted += new EventHandler(RecreateChannel);
try {
  ((ICommunicationObject)_connection).Open();
} catch (CommunicationException ce) {
  Console.Write(ce.ToString());
}

Для вызова обратного вызова я использую следующее:

OperationContext.Current.GetCallbackChannel (). Log ("Hello World!");

Но он просто висит там, и через некоторое время клиент жалуется на тайм-ауты. Есть ли простое решение, почему?

1 Ответ

1 голос
/ 22 мая 2010

звучит как проблема с .ClientConfig, не могли бы вы опубликовать это здесь, пожалуйста?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...