РЕЗУЛЬТАТ: Глупая ошибка по-настоящему. Неправильное добавление моего клиента в Словарь службы вызвало ошибку. Я искал проблему во всех неправильных местах.WCF-клиент не может повторно подключиться после перезагрузки.
У меня есть служба WCF с именованным каналом с обратным вызовом. Он сообщает о подключении устройств USB к событиям клиентам. Проблема заключается в том, что если я выхожу из клиента и перезапускаю его, я всегда получаю ошибку канала. Когда я выйти из клиента я называю код следующим образом:
public void Dispose()
{
try
{
if (factory.State == CommunicationState.Opened)
{
proxy.UnSubscribe(_clientName);
factory.Close();
}
else
{
factory.Abort();
}
}
catch (Exception)
{
factory.Abort();
}
}
создать канал следующим образом:
NetNamedPipeBinding netPipe = new NetNamedPipeBinding();
// Security is not worth it for this.
netPipe.Security.Mode = NetNamedPipeSecurityMode.None;
// The receive time on the client side is ignored. The time the callback session
// is kept alive is determined by the receive time on the service side which is infinite.
factory = new DuplexChannelFactory<IUsbBroker>(
new InstanceContext(this), netPipe,
new EndpointAddress("net.pipe://localhost/Gyannea/WCFCallbacks/UsbBroker"));
try
{
proxy = (IUsbBroker)factory.CreateChannel();
}
catch (Exception)
{
factory.Abort();
}
Я недавно добавил Try-улов в канале/прокси-создание, чтобы увидеть, если это было проблема, когда я перезапустил клиент, пытаясь снова воссоздать канал, если он был поврежден после прерывания. Это не работает.
Я пропустил что-то фундаментальное здесь? Спасибо!
Я себя хостинг сервиса и запуск исполняемого файла в режиме администратора (он не будет соединяться вообще с out работает в режиме администратора). В то же время я могу подключиться к службе, используя N экземпляров одного и того же клиента. Однако, когда я выхожу из клиента #n, а затем перезапускаю его, я не могу подключиться. Остальные клиенты все еще в порядке. Клиент НЕ находится в режиме администратора. Нужен ли клиент в режиме администратора? Это проблема с несколькими экземплярами? Возможно, я неправильно использую дуплексный канал (WCF для меня совершенно новый!) –
Оказывается, я неправильно неправильно добавил своего клиента в словарь. Глупая ошибка, которая стоила мне двух дней непрерывного вытягивания волос. –
Приятно слышать, что вам удастся решить вашу проблему. это сообщение в блоге обсуждать о совместной работе wcf duplex с именемpipe http://dotnet-experience.blogspot.com.au/2012/02/inter-process-duplex-communication-with.html – Mahesh