Это проблема с пространством имен? - PullRequest
1 голос
/ 27 сентября 2010

Я испытываю странное поведение при разработке базовых веб-сервисов.Этот вопрос может быть глупым, но я думаю, что кто-то сможет объяснить это наблюдение.

Я разрабатываю веб-сервис с веб-методом, MyWebMethod

MyWebMethod(MyEnum Param, .....)

Где,

public enum MyEnum : int
    {
       Type_1 =1;
       Type_2 =2;
       Type_3 =3;
    }

Теперь я использую свой клиент для связи с этим сервисом, но для каждого типа запроса, Type_1, Type_2 и т. Д., Сервис фиксирует его как Type_1.Например, если я создаю точку останова на MyWebMethod в своем веб-сервисе, я вижу Type_1 как тип param1.Я думаю, что это проблема с Namespacing.Я не вижу никаких других дефектов в коде.Любая идея, основанная на опыте?

Ответы [ 3 ]

2 голосов
/ 27 сентября 2010

Когда enum сериализуется, через провод (имена) передается только его строковое представление, а не значения.Я полагаю, что именно по этой причине вы получаете неправильные значения.

Проверьте эти 2 статьи для получения дополнительной информации

  1. WebServices_and_Enums
  2. Использование enum в параметре веб-сервиса
0 голосов
/ 27 сентября 2010

Полагаю, ваше перечисление не должно наследоваться от int. Вы указываете имя и значение в перечислении, этого должно быть достаточно. Я предполагаю, что весь ваш код .NET 2.0. В качестве теста верните значение перечисления из веб-службы. Просто для того, чтобы убедиться, что XML Serialization работает должным образом, когда служба работает непосредственно с браузером.

0 голосов
/ 27 сентября 2010

Если это веб-служба WCF и клиент .NET 2.0, сгенерированный с wsdl.exe для каждого типа значения в сигнатуре метода, будет добавлен логический параметр с именем XXXSpecified, который необходимо установить на true.Проверьте это сообщение в блоге для более подробной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...