Отловить Exception сгенереный в WebService-e

 
0
 
.NET
ava
Jlekc | 02.11.2007, 18:35
При вызове ВебМетода можен быть сгенерены различные exception-ы (FileNotFoundException, UnauthorizedAccessException etc.).
Но на стороне клиента я получаю SoapException.

То что ВебМетод делает обертку это понятно.
Но почему када я генерю SoapException и как innerException передаю нужный мне Exception, на стороне клиента innerException==null??
Как правильно сгенерить Exception в ВебМетоде??
Comments (4)
ava
tol05 | 02.11.2007, 19:53 #
Если в гугле поискать на тему "SoapException innerException null" - то видно, что эта тема долбит все народы мира и давно :biggrin

SoapException серилизуется и передается на клиент. Но при этом InnerException не серилизуется, соответственно, на клиенте и не десерилизуется...

Поэтому все советуют два варианта:
1. вместо того, чтобы пихать Exception в InnerException - просто писать сообщение в SoapException.Detail
Цитата


In another world, for general webservice's webmethod, when there occur an exception and been throwed to clientside, the generated SoapException won't contains InnerException info. Detailed exception info or customized exception info should be stored in the SoapException.Detail property(an

xmlNode).

взято отсюда

2. Класс своего собственного Exception создать и в нем (опять же) серилизацию прописать custom-ную.
ava
Jlekc | 02.11.2007, 20:00 #
да, уже понял

ЗЫ: Мелкомягкии так и не смогли объяснить зачем конструктору SoapException принимать innerException, если птом им не воспользуешся
ava
tol05 | 03.11.2007, 00:20 #
Цитата (Jlekc @ 2.11.2007, 19:00 findReferencedText)
Мелкомягкии так и не смогли объяснить зачем конструктору SoapException принимать innerException, если птом им не воспользуешся

только для поддержки архитектурных концепций и не более.
Просто свойство InnerException определено в базовом для всех исключений классе Exception. Куда ж его денешь? Особенно после того, когда так красиво расписываются полная поддержка полиморфизма и типозащищенности в .Net?
Раз такие понты у мелкомягких, тогда уж или отдельный базовый класс SimpleException нужно создавать, без InnerException, или стиснуть зубы и не выпускать класс SoapException (и другие, такие же корявые) в жизнь, пока не реализуешь сам всего того, что так красиво и убедительно от других требуешь.

То, что .Net корявое еще - это естетсвенно. Достаточно поискать у них на сайтах списки с патчами и посмотреть колличество critical updatе-ов...
Ну да ладно, все не без греха. Времени мало прошло, а денег заработать ой как надо.
ava
Jlekc | 03.11.2007, 17:18 #
О сыром виде .Net известно. Писал под Framwork Compact, там токого добра полно.
Просто каждый раз натыкаешся на грабли, и думаеш руки у меня кривые, или просто кто-то что-то не доделал. Вот и приходить поднимать подобные темы.
Лад вопрос решен, видел примеры как пользоваться SoapException, и описывать внутри него стои структуры - криво, но работать будет.
Please register or login to write.
Firm of day
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Contributors
  Jlekc   tol05
advanced
Submit