2013-08-14 2 views
10

Получать эту ошибку при попытке работать с очередью:System.ServiceModel.ServiceHost, не может быть использован для связи, поскольку он находится в состоянии FAULTED

непредвиденная ошибка: Объект связи, System.ServiceModel.ServiceHost, не может использоваться для связи, поскольку он находится в состоянии Faulted. в System.ServiceModel.Channels.CommunicationObject.Close (тайм-аут TimeSpan)

Как его преодолеть?

Update: ответ на мое решение, публикуемую в конце

+0

любой шанс показать какой-то код :) – Chris

+0

Я решил и решил отправить ответ :) Не нашел это решение в сети раньше, поэтому решил поделиться :) – GrimSmiler

+1

Лучше бы опубликовать свой решение в качестве ответа, а затем пометить его как таковое. Это помогает понять, как другие приходят на эту страницу. –

ответ

6

Update: В моем случае, что помогло было:

1) включения трассировки журналы: http://msdn.microsoft.com/en-us/library/ms732023.aspx

2) в журнал трассировки он писал:

Binding проверка не удалась, поскольку свойства связывания-х ExactlyOnce устанавливается в true, пока очередь назначения не является транзакционной. Хост службы не может быть открыт. Разрешите этот конфликт, установив для свойства ExactlyOnce значение false или создав транзакционную очередь для этой привязки.

В ответе говорится все. Создал транзакционную очередь - все работает :) надеюсь, что это помогает людям :)

1

Из моего опыта, когда конечная точка находится в поврежденном состоянии, он не будет восстанавливаться самостоятельно и должен быть перезапущен. Невозможно сделать это с клиентской стороны. Хозяин должен это сделать.

На принимающей стороне, вы можете проверить наличие неисправного состояния, используя такой код:

While True 
     'broken connection case 
     If objServiceHost(ii).State <> CommunicationState.Opened Then 
     Throw New Exception("SynchronizationWS Service Host failed.") 
     Exit While 
     End If 
    Next 
    Threading.Thread.Sleep(c_SleepTime) 'sleep 1 second before going trying next 
    End While 

Мы имеем программу высшего уровня, который следит за сердцебиением нашего веба-сервис (который работает в рамках службы Windows) и если программа более высокого уровня обнаружит, что сердцебиение остановлена, она переработает службу Windows, перезапустив веб-службу WCF.

4

Эта проблема возникает из-за прав доступа. Запустите Visual Studio с правами администратора, и проблема будет решена. Чтобы запустить Visual Studio с правами администратора, щелкните правой кнопкой мыши значок Visual Studio и выберите «Запуск от имени администратора».

+0

Спасибо, это решило это для меня! –

+0

Спасибо, друг. – Khalid

Смежные вопросы

 Смежные вопросы