wsHttpBinding по умолчанию использует учетные данные Windows для аутентификации, что нормально, если вы находитесь в одном домене или в домене с полными доверительными отношениями.
Похоже, что сообщение об ошибке указывает на тайм-аут - возможно, вам нужно настроить его. Если на вашем сервере возникает исключение, которое не обрабатывается должным образом и не превращается в ошибку SOAP, то канал (соединение между клиентом и сервером) становится «неисправным», например, оно переходит в состояние ошибки и больше не может быть использовано. Все, что вы можете сделать, это прервать канал (вы даже не можете больше его закрыть в этот момент) и заново создать его с нуля.
Или, может быть, этот тайм-аут произошел из-за того, что вы завернули использование прокси-клиента в блоке using(......) {......}
? Обычно это отличная идея, но не в случае клиентского прокси WCF.
Проблема возникает из-за того, что, если канал неисправен, вы даже не можете его закрыть. Если вы включите использование клиентского прокси в оператор using (), когда на сервере что-то пойдет не так и будет обработано неправильно, произойдет сбой канала, и в конце блока using () среда выполнения .NET попытается закройте его, после чего вы получите еще одно исключение, так как канал неисправен ....
Так что для клиентов WCF рекомендуемая лучшая практика выглядит примерно так:
YourClientProxy proxy = new YourClientProxy();
try
{
... use it
proxy.Close();
}
catch(TimeoutException exception)
{
proxy.Abort();
}
catch(CommunicationException exception)
{
proxy.Abort();
}
Марк