Передача типов из web-service

Izwerg
Дата: 16.04.2007 22:49:21
Здравствуйте!

Есть веб-сервис, представляющий собой класс с набором веб-методов. Также внутри класса объявлен публичный класс. Что странно, если ни один из методов не возвращает/принимает хотя бы одного параметра этого внутреннего класса, то в ASP.NET приложении, использующем веб-сервис, этого типа (класса) не видно. Но как только один параметр становится типа этого класса, сразу он появляется в ASP.NET приложении, имеющем web-reference на сервис. Вопрос: как получить доступ к типу (классу) веб-сервиса, если ни один из параметров веб-методов не имеет такой тип.


Может возникнуть резонный вопрос: ЗАЧЕМ?
А вот зачем:

веб-сервис:
-----------
[WebService(Namespace = "http://zx.com/zx/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class ZxSrv : System.Web.Services.WebService
{
public class ZxSpecialException : Exception { }

[WebMethod]
public void GetSpecialData(int id)
{
throw new ZxSpecialException();
}

т.е. я хочу метнуть кустом-исключение, а в ASP.NET приложении поймать конкретно его, а не Exception вообще.

Как?
XXI
Дата: 17.04.2007 07:24:12
Так просто не получится. Потому что ваше клиентское приложение в любом случае получит SoapException (нет такого понятия Exception в Web-Service-ах в принципе). Поэтому делают CustomException который идет в SoapException.Detail. Как пример, смотрите здесь.
Izwerg
Дата: 17.04.2007 10:06:04
Ох. Почему все так сложно... Неужели майкрософту трудно было сделать упаковку/распаковку нормальных исключений в/из SOAP... как бы было удобно. Ну да ладно.
Спасибо за информацию.