2013-03-29 5 views
0

У меня возникла проблема с достижением следующего сценария.WCE десериализация типа объекта Свойства

В настоящее время у нас есть метод, который ожидает список пар значений ключа «контекст». Однако значение может быть любого типа.

Цель состоит в том, чтобы сделать этот метод доступным с использованием WCF. Таким образом, я создал

public List<Element> Transform(List<Element> elements) 
{ 
... Transformation of elements takes place 
} 

[DataContract(Namespace = Constants.NAMESPACE)] 
public struct Element 
{ 
    [DataMember(Order = 0, IsRequired = true)] 
    public string Key; 
    [DataMember(Order = 1, IsRequired = true)] 
    public object Value; 
} 

Когда я использую тестовый проект .Net, все работает нормально.

Однако, когда я называю эту услугу с помощью SOAP UI я получаю сообщение об ошибке:

Форматировщика бросил исключение при попытке десериализации сообщений: Была ошибка при попытке десериализации элементов параметров. Сообщение InnerException было: «Element Value не может иметь дочернее содержимое для десериализации как объекта. Используйте XmlNode [] для десериализации этого шаблона XML. '.

У меня проблема выяснение, что делать. любая помощь оценивается.

XML-я использую это:

<ws:Transform> 
    <ws:elements> 
      <ws:Element> 
       <ws:Key>Key1</ws:Key> 
       <ws:Value>A</ws:Value> 
      </ws:Element> 
      <ws:Element> 
       <ws:Key>Key2</ws:Key> 
       <ws:Value>B</ws:Value> 
      </ws:Element> 
     <ws:ScriptName>SetVariable</ws:ScriptName> 
    </ws:elements> 
    </ws:Transform> 

ответ

1

В этом случае SoapUI использует технологию .Net, которая не понимает целевой типа для объекта.

Отправка объекта недействительна на всех платформах. На самом деле вы также можете получить сообщение об ошибке с клиентом .Net. Лучше всего создать общее представление xml значения и все клиенты раздуть объект из xml

Смежные вопросы