![]() |
|
Модераторы: gambit |
![]()
|
|
| Freak_FB |
|
|||
![]() Ктулхувед ![]() ![]() Профиль Группа: Участник Сообщений: 296 Регистрация: 13.10.2006 Репутация: нет Всего: 4 |
Есть такая задача: пишу сайт, некоторые данные для которого заказчик предлагает брать через веб-сервис.
Беру студию, добавляю Service Reference по данному адресу, получаю класс-proxy. Теперь нюанс: иногда они должны отправлять мне исключения в виде FaultException, а я их должен обрабатывать. На деле получается, что WSDL схема предполагает генерацию исключений по определенным методам, и после генерации прокси-классов генерируются обертки для исключений. А при запуске клиента эти исключения не отлавливаются. Вот мой код:
Я намеренно передаю неверный GUID чтобы вызвать исключение UnauthorisedAccessFault на стороне сервера, и на стороне клиента его структурированно обработать. На деле обработка исключение доходит аж до последнего блока. Я недолго знаком с WCF и не знаю многих деталей, так что прошу подсказать, как такое может быть, что обработка не происходит, может ли быть так что на стороне сервера неверно сконфигурировано, и если так - могу ли я у себя что-то предпринять чтобы исправить это поведение. P.S.: изменения на стороне сервера, как вы понимаете, исключены. |
|||
|
||||
| mihryak |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 731 Регистрация: 28.4.2007 Где: С-Пб Репутация: 3 Всего: 36 |
IncludeExceptionDetailInFaults
надо этот атрибут указать классу, реализующему веб-сервис как-то так
|
|||
|
||||
| Freak_FB |
|
|||
![]() Ктулхувед ![]() ![]() Профиль Группа: Участник Сообщений: 296 Регистрация: 13.10.2006 Репутация: нет Всего: 4 |
Я так понял это нужно указать на стороне сервера?
Я упоминал, что не могу повлиять на поведение сервера. Может есть какой-то способ для клиента? |
|||
|
||||
| mihryak |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 731 Регистрация: 28.4.2007 Где: С-Пб Репутация: 3 Всего: 36 |
нет, исключения идут от сервера, если он их не заворачивает в FaultException, то и на клиенте ничего не получить
|
|||
|
||||
| Freak_FB |
|
|||
![]() Ктулхувед ![]() ![]() Профиль Группа: Участник Сообщений: 296 Регистрация: 13.10.2006 Репутация: нет Всего: 4 |
То есть если со стороны сервера я вижу в схеме WSDL что исключения к методам привязаны, и Add Service Reference добавляет классы для исключений, а они все равно не ловятся клиентом - что это может значить?
|
|||
|
||||
| mihryak |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 731 Регистрация: 28.4.2007 Где: С-Пб Репутация: 3 Всего: 36 |
как-то я упустил, что на сервере они объявлены и на клиента приходят
IncludeExceptionDetailInFaults тут мимо тогда, по-моему, единственной причиной может быть, что в контракте исключение FaultException<UnauthorisedAccessFault> объявлено, но сервер не кидает его в ответ на твой гуид есть код сервера? |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, cully, mr.DUDA, Exception. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Распределённые приложения и сеть | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |