Если я правильно понял, то проблема в таймаутах. К сожалению эта проблема в прямую не решается. Надо либо делать пустой метод типа Ping, который будет раз в минуту напоминать серверу что подключение еще живо. Кроме того можно подписаться на событие кнала Faulted и переподключаться при срабатывании.
Да, еще возможно надо бвыставить ConcurrencyMode = ConcurrencyMode.Multiple или Reentrant.
Здравствуйте, bsp-sound, Вы писали:
BS>Искал по MSDN "DispatchRuntime.AutomaticInputSessionShutdown" — что-то нашел... Но как прикрутить к приложению — там не рассмотрено.
Попробуйте так
public class MyBehavior : IEndpointBehavior
{
public void AddBindingParameters(ServiceEndpoint endpoint,
BindingParameterCollection bindingParameters)
{
}
public void ApplyClientBehavior(ServiceEndpoint endpoint,
ClientRuntime clientRuntime)
{
}
public void ApplyDispatchBehavior(ServiceEndpoint endpoint,
EndpointDispatcher endpointDispatcher)
{
endpointDispatcher.DispatchRuntime.AutomaticInputSessionShutdown = false;
}
public void Validate(ServiceEndpoint endpoint)
{
}
}
И после создания хоста и точки
endPoint.Behaviors.Add(new MyBehavior());
или
foreach (var endPoint in host.Description.Endpoints)
endPoint.Behaviors.Add(new MyBehavior());