Насколько я знаю, к сожалению, ответ - нет. Вы не можете создавать свои собственные исключения на стороне сервера и ожидать их использования на стороне клиента через WSE. Я не могу дать много технических сведений о том, почему (например, почему WSE это не разрешено), но я уверен в своем ответе, потому что я проверил это.
Вы можете использовать подход, описанный в предоставленной ссылке, чтобы вернуть пользовательское исключение, которое наследуется от исключения System.Web.Services.Protocols.SoapException, однако вы должны захватить исключение на стороне клиента как SoapException, поскольку вы не будете возможность захватить его как пользовательский тип исключения: http://msdn.microsoft.com/en-us/library/ms229064.aspx
Чтобы заново создать тест для собственного подтверждения, сделайте следующее:
- Создайте тестовый класс исключений, назовите его как хотите и убедитесь, что он соответствует шаблону, описанному в приведенной выше ссылке (есть примеры кода).
Создайте веб-метод, который явно возвращает тестовое исключение, например:
'This is in VB.Net
<WebMethod()> _
Public Function ThrowTestSoapException() As TestSoapException
Return New TestSoapException()
End Function
Попробуйте восстановить библиотеку WSE вашего клиента (используя WseWsdl3.exe), и вы получите сообщение об ошибке, подобное этому: « Ошибка: сервер недоступен, пожалуйста попробуйте позже »
Это все, что я мог получить, пытаясь создать свои собственные передаваемые пользовательские исключения. Опять же, единственное, что мне удалось сделать, это вернуть пользовательское исключение, которое унаследовано от класса SoapException, и перехватить его на стороне клиента как SoapException. Это тот же метод, который описан в ссылке, на которую CheGueVerra указал выше .
В ответ на комментарий Джона Сондерса выше: Да, если возможно перейти на WCF, WSE действительно устарела. Поскольку эта работа связана с мной и с другими, задающими эти вопросы, переход от WSE к WCF потребует одобрения руководства - поэтому некоторые из нас не могут легко внести эти изменения - даже если мы отчаянно хотим этого.