Я недавно столкнулся с этой проблемой. Чтобы обойти это, я использовал XmlSerializer
и удалил явное упорядочение из атрибутов XmlElement
:
set proxy_tool="C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SvcUtil.exe" /nologo /t:code /ser:XmlSerializer /UseSerializerForFaults
set sed_tool="$(ProjectDir)sed.exe" -r -i "s/,?[[:space:]]*Order=[[:digit:]]+//"
%proxy_tool% /o:"Proxy1.cs" /n:*,Namespaces.Name1 "Proxy1.wsdl"
%sed_tool% "Proxy1.cs"
%proxy_tool% /o:"Proxy2.cs" /n:*,Namespaces.Name2 "Proxy2.wsdl"
%sed_tool% "Proxy2.cs"
...
В моем блоге есть дополнительная информация .
Если вы хотите знать, почему заказ имеет значение, это потому, что sequence
в XSD имеет определенный заказ, а контракты на веб-службы определяются с помощью XSD.
С Спецификация :
Следствием этого определения является то, что любой элемент, появляющийся в экземпляре, тип которого объявлен как USAddress (например, shipTo в po.xml), должен состоять из пяти элементов и одного атрибута. Эти элементы должны называться name, street, city, State и zip, как указано в значениях атрибутов name объявлений, , и элементы должны появляться в той же последовательности (порядке), в которой они были объявлены.