#web-services #visual-studio-2010 #soap #enums
#веб-сервисы #visual-studio-2010 #soap #перечисления
Вопрос:
У меня есть веб-сервис, на который ссылается в моем проекте webreference.
Вот описание перечисления в файле wsdl :
<xs:simpleType name="photoIdType">
<xs:restriction base="xs:string">
<xs:enumeration value="DRV"/>
<!-- drivers license -->
<xs:enumeration value="PAS"/>
<!-- passport -->
<xs:enumeration value="STA"/>
<!-- state ID -->
<xs:enumeration value="GOV"/>
<!-- government id -->
<xs:enumeration value="ALN"/>
<!-- alien id -->
</xs:restriction>
</xs:simpleType>
Когда я должен указать значение этой переменной, это мой способ :
switch (xRootNode.Element(TagsXML.MG_T_SENDER_PHOTO_ID_TYPE).Value)
{
case "ALN":
sendRequest.senderPhotoIdType = photoIdType.ALN;
break;
case "DRV":
sendRequest.senderPhotoIdType = photoIdType.DRV;
break;
case "GOV":
sendRequest.senderPhotoIdType = photoIdType.GOV;
break;
case "PAS":
sendRequest.senderPhotoIdType = photoIdType.PAS;
break;
case "STA":
sendRequest.senderPhotoIdType = photoIdType.STA;
break;
}
Непосредственно перед вызовом метода webservice я проверяю значение моего перечисления. Значение здесь, и все в порядке.
Но когда я проверяю с помощью Fiddler (анализатор http-пакетов), отправлен ли запрос Soap на webservice, узел photoIdType отсутствует!
Вы знаете, известна ли эта проблема из Visual Studio? Вы знаете, почему значение enum не отправляется?
Я могу предоставить больше информации, если вам это нужно.
Ответ №1:
Я только что столкнулся с той же проблемой и, наконец, нашел ответ. Если вы посмотрите на сгенерированное sendRequest
определение, вы найдете senderPhotoIdType
Specified
, которое является bool. Когда вы устанавливаете значение для senderPhotoIdType
, вам нужно установить senderPhotoIdTypeSpecified
значение true
, чтобы значение было сериализовано и передано.
(отследил ответ в этом древнем потоке http://social.msdn.microsoft.com/forums/en-US/netfxremoting/thread/616f67f8-bf11-46e3-b705-41940dcafab6 )
Комментарии:
1. Спасибо, вы только что сэкономили мне много времени и боли!
2. Спасибо за ответ .. это экономит мое время.