Я не знаю, что вы уже видели в отношении модулей расширения SOAP, но вот хороший пример одного (он начинается в середине статьи). Надеюсь, это поможет.
UPDATE
Если я вас правильно понимаю, вы не спрашиваете о перехвате исключений, которые выбрасываются в код вашего обслуживания (я полагаю, что вы уже обрабатываете их к своему удовлетворению). Вместо этого вы пытаетесь перехватить ошибки в коммуникационном стеке ASP.NET, т.е.
- Сериализация объектов на стороне клиента в сообщении запроса
- Передача сообщения запроса на сервер
- десериализация сообщения запроса в объекты на стороне сервера
- ... и наоборот для ответа
Если это так, то на вашем месте я бы просто оставил все как есть и позволил ASP.NET генерировать любые исключения, которые он хочет. Я говорю это, потому что ...
Перехват исключений, которые выбрасываются внутри , ваш код обслуживания добавляет подлинную ценность с точки зрения безопасности. Возвращая минимальную информацию о сбое SOAP, вы можете помешать злоумышленнику узнать слишком много о вашем сервисе. Это лучшая практика для любого веб-сервиса.
Однако, по моему мнению, перехват исключений, которые вызываются из стека связи, не добавляет ценности. Злоумышленник не собирается ничего узнавать о вашем коде, когда ему говорят, например, что «поле X ожидалось xs:int
, но было пропущено xs:dateTime
». Он уже знает это, изучая WSDL.