У меня есть много веб-сервисов, работающих в моем проекте, но что-то странное происходит довольно долгое время. Мои службы иногда вылетают без причины с сообщением об ошибке «Объект связи System.ServiceModel.Channels.ServiceChannel не может использоваться для связи, потому что он находится в состоянии Faulted». Обычно это происходит, когда я запускаю приложение первым делом с утра, после чего они встречаются реже. Любые идеи относительно того, что может вызвать эту ошибку?WCF в состоянии сбойных служб
ответ
Это звучит как тайм-аут в сочетании с отсутствием обслуживания неудачных сервисов.
Утром требуется больше времени, так как код должен быть скомпилирован JIT, возможно, также необходимо кэшировать данные и планы запросов.
Вот один из способов получить клиент WCF, чтобы убирать за собой http://nimtug.org/blogs/damien-mcgivern/archive/2009/05/26/wcf-communicationobjectfaultedexception-quot-cannot-be-used-for-communication-because-it-is-in-the-faulted-state-quot-messagesecurityexception-quot-an-error-occurred-when-verifying-security-for-the-message-quot.aspx
, но я не использую «использование "блоков. – Farax
Вам все равно придется закрыть службу после того, как вы ее использовали, и вам нужно отменить службу, если она находится в состоянии сбоя. –
Действительно, после удаления моего блока USING я мог видеть реальную ошибку. 10x –
Если служба WCF бросает FaultException
, клиент будет иметь его состояние изменяется на CommunicationState.Faulted
. Если вы попробуете использовать этот объект клиента, чтобы вызвать другую операцию службы, вы получите ошибку
«Коммуникационный объект System.ServiceModel.Channels.ServiceChannel, не может быть использован для связи , потому что он находится в состоянии Faulted. "
Вы также можете получить эту ошибку, если попытаетесь вызвать метод Close()
на неисправном клиенте, я не могу вспомнить.
Вы можете проверить состояние своего объекта-клиента, указав свойство State
. Если вы хотите закрыть своего клиента правильно (что вы должны делать), вам нужно вызвать метод Abort()
, если клиент находится в состоянии Faulted
и метод Close()
, если клиент находится в любом другом состоянии.
Вид поражения цели 'use', не так ли? WCF никогда не перестает удивлять меня, насколько это плохо спроектировано. –
- 1. Настройка служб WCF в коде WCF 4,5
- 2. Смешивание служб RIA и стандартных служб WCF
- 3. Мониторинг веб-служб WCF
- 4. Защита веб-служб WCF
- 5. Расширение служб WCF
- 6. создание нескольких служб WCF
- 7. Развертывание служб WCF
- 8. Тестирование служб WCF
- 9. Параметры безопасности служб WCF
- 10. Сессии служб данных WCF
- 11. Вызов служб WCF в AJAX
- 12. Обслуживание служб WCF в MVC
- 13. Azure Каталог Войти сбойных
- 14. масштабируемость сбойных транзакций mysql
- 15. Обнаружение сбойных заданий в concurrent.futures
- 16. Новое для веб-служб WCF
- 17. Разбивка проекта служб WCF RIA
- 18. Служба доменных служб WCF RIA
- 19. RIA Services против служб WCF
- 20. WCF потребляя клиентов несколько служб
- 21. Защита метаданных данных служб WCF
- 22. Внедрение служб WCF для nopCommerce
- 23. Загрузка тестирования для служб WCF
- 24. Стратегии внедрения служб данных WCF
- 25. Автоматизация установки различных служб WCF
- 26. Выполнение обратных совместимых служб WCF
- 27. Использование служб WCF с PHP
- 28. Как развернуть библиотеку служб WCF в WAS?
- 29. Добавление классов в библиотеку служб WCF
- 30. Инкапсуляция нескольких служб WCF в библиотеку классов
Вы пробовали трассировку WCF? –
Эта ошибка исходит из кода, использующего службу WCF, или из самой службы? –
@Ladislav: Нет, еще нет. Я не слишком уверен в трассировке WCF. Не хорошие учебники, чтобы начать меня? @Graham: Это в основном происходит из кода, использующего службу WCF. – Farax