Это так же странно, как и получается. Имя, указанное в ElementName атрибута XmlArray, появляется в WISDL, но не в реальном ответе. Работает под 3.5 (2.0.50727 для IIS AppPool).ASP.NET WebService игнорирование возврата: XmlArray ElementName
После более подробного копания - авторизованный WSDL имеет разные объявления для ответов POST/GET vs SOAP, а diff заключается в том, что они просто ссылаются на autogenned elem/type для массива, а не на весь тип ответа/elem, который имеет новое имя.
Вопрос все еще remians - ПОЧЕМУ это происходит и что еще важнее, как его исправить?
Вот подробности:
WebMethod:
[WebMethod]
[return: XmlArray(ElementName = "TickTick")]
public TTickerItem[] GetActiveTickerItems2(uint version, uint language, uint locale, int startIndex, int maxItems)
В WSDL:
<s:element name="GetActiveTickerItems2Response">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="TickTick" type="tns:ArrayOfTTickerItem" />
</s:sequence>
</s:complexType>
</s:element>
<wsdl:message name="GetActiveTickerItems2SoapIn">
<wsdl:part name="parameters" element="tns:GetActiveTickerItems2" />
</wsdl:message>
<wsdl:message name="GetActiveTickerItems2SoapOut">
<wsdl:part name="parameters" element="tns:GetActiveTickerItems2Response" />
</wsdl:message>
Auto-genned тестовая страница показывает примеры с новым именем (TickTick).
Фактический Ответ:
<ArrayOfTTickerItem xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://tempuri.org/">
<TTickerItem>
<m_message>New Ticker 1st Message</m_message>
<m_priority>2</m_priority>
<m_messageType>0</m_messageType>
<m_data1>0</m_data1>
<m_data2>13</m_data2>
</TTickerItem>
. . . . . . . .
</ArrayOfTTickerItem>
Немного разные объявления для GET/POST - не попадает в новое имя:
<wsdl:message name="GetActiveTickerItems2HttpGetOut">
<wsdl:part name="Body" element="tns:ArrayOfTTickerItem" />
</wsdl:message>
. . . . . . .
<wsdl:message name="GetActiveTickerItems2HttpPostOut">
<wsdl:part name="Body" element="tns:ArrayOfTTickerItem" />
</wsdl:message>
Он все еще может быть вопрос о некоторых настройках, часть web.config (Я просто добавил имя = «HttpGet» и HttpPost в разделе //system.web/webServices/protocols xpath, который всегда был достаточным) ...
Там нет веб-ссылки участвует - код сервера получает строить и хсору развернуты - VS не получает никакой информации об этом, а тестовая страница - это авторизованная ASP.net, например http: //localhost/MyVroot/MyWS.asmx, http: //localhost/MyVroot/MyWS.a smx? WSDL, http: //MyBox/MyVroot/MyWS.asmx? op = GetActiveTickerItems2 и т. д. и т. д., поэтому я ищу фактический ответ XML в IE – ZXX