Ошибка трассировки WCF: предпринята попытка выполнить операцию с несуществующим сетевым подключением

Я настроил трассировку службы WCF, потому что 1 клиент из примерно 30 не смог завершить подключение к серверу. После настройки тестового примера на этом клиенте отчет о трассировке WCF дал мне следующие исключения:

Попытка операции с несуществующим сетевым подключением

а потом

Операция ввода-вывода была прервана либо из-за выхода из потока, либо из-за запроса приложения.

Я нашел этот вопрос MSDN и решение, применимое к Windows 2000 Server и службам терминалов и предлагающее исправление для устранения проблемы.

Я использую Windows 2003 Server, поэтому исправление ко мне не относится. Кто-нибудь знает, что происходит с этим 1 клиентом, в то время как остальные 29 подключаются просто отлично?

Изменить: клиент возвращает это исключение при попытке открыть соединение с сервером:

Произошла ошибка при получении ответа HTTP на адрес http://endpointaddress/. Это может быть связано с тем, что привязка конечной точки службы не использует протокол HTTP. Это также может быть связано с прерыванием сервером контекста HTTP-запроса (возможно, из-за закрытия службы). Смотрите журналы сервера для более подробной информации.


person ScottN    schedule 25.08.2010    source источник
comment
Однажды у меня была проблема с подключением WCF на одном клиенте, но я не помню, было ли это то же самое. В этом случае оказалось, что машина имеет статический IP-адрес, которого у нее быть не должно. Он продублировал другой в сети или что-то в этом роде.   -  person Jay    schedule 26.08.2010
comment
Спасибо за предложение, Джей, я могу получить удаленный доступ к клиенту, другой клиент WCF на этом компьютере подключается к совершенно другой службе WCF на другом сервере, который работает нормально, так что это заставляет меня верить в что-то с сервером?   -  person ScottN    schedule 26.08.2010


Ответы (1)


Недавно я столкнулся с этой проблемой. Основная проблема заключалась в контексте, в котором были сделаны звонки.

У меня было много кода, который выглядел так:

New()
{
    IPC_Server.LoadFirstSetOfData();
}

IPC_Server_LoadFirstSetOfData_Completed(Object sender, System.ComponentModel.AsyncCompletedEventArgs e)
{
    IPC_Server.LoadSecondSetOfData();
}

IPC_Server_LoadSecondSetOfData_Completed(Object sender, System.ComponentModel.AsyncCompletedEventArgs e)
{
    ShowDataToUser();
}

Проблема заключалась в том, что я вызывал 2-ю функцию IPC, находясь внутри 1-го обратного вызова. По какой-то причине это «искажает» следующий вызов. Переместив наши вызовы IPC из обратных вызовов, мы решили эту проблему.

Теперь вы сами решаете, как выводить вызовы из обратных вызовов. Может быть, изменение контракта? Имея таймер, который следит за входом 1-го обратного вызова, а затем выполняет 2-й вызов IPC из таймера? Выбор остается за вами.

person Onion-Knight    schedule 01.10.2010
comment
Спасибо за публикацию ответа. К сожалению, мое соединение никогда не доходит до того, что я могу даже делать какие-либо интерфейсные вызовы. Это начальный Open на клиенте на сервере. Вот что мне не удается. Эта проблема каким-то образом решалась на стороне клиента в течение 3 месяцев, а затем недавно она вернулась и повторяется снова. Что делает меня на 100% уверенным, что это проблема конфигурации клиента либо в маршрутизаторе, либо в чем-то еще. Это очень сбивает с толку, и я не знаю, как представить проблему клиенту, чтобы показать, что это его проблема, и ему нужно что-то изменить. - person ScottN; 01.02.2011