значение перечисления, не переданное в запросе soap

#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. Спасибо за ответ .. это экономит мое время.