このWDSLを使用してVS2013 BizTalkでSOAP-Web-Proxyを生成すると問題が発生します。WSDLからSOAP Webプロキシを生成する問題BizTalk VS2013
VSが適切なxsdとcsを生成しないようです。 VSによって生成された
:
<ns0:timeseriesValues xmlns:ns0="http://test.com/abc/DataService/xyz">
<ns0:id>mdsId_0</ns0:id>
<ns0:res>day</ns0:res>
<ns0:quality>prognosis</ns0:quality>
<ns0:timeseries>
<ns0:time>1999-05-31T13:20:00.000-05:00</ns0:time>
<ns0:value>10</ns0:value>
</ns0:timeseries>
<ns0:timeseries>
<ns0:time>1999-05-31T13:20:00.000-05:00</ns0:time>
<ns0:value>10</ns0:value>
</ns0:timeseries>
<ns0:timeseries>
<ns0:time>1999-05-31T13:20:00.000-05:00</ns0:time>
<ns0:value>10</ns0:value>
</ns0:timeseries>
</ns0:timeseriesValues>
しかし、それはWSと話をし、このようにする必要があります:
<ns0:sendTemp xmlns:ns0="http://www.test.com/DataService.xsd">
<ns0:id>138846</ns0:id>
<ns0:res>hour</ns0:res>
<ns0:quality>prognosis</ns0:quality>
<ns0:timeseries>
<ns0:time>2017-08-27T23:00:00+02:00</ns0:time>
<ns0:value>16.7</ns0:value>
</ns0:timeseries>
<ns0:timeseries>
<ns0:time>2017-08-28T00:00:00+02:00</ns0:time>
<ns0:value>16</ns0:value>
</ns0:timeseries>
</ns0:sendTemp>
WSDL:私は、XSDからインスタンスを生成するとき、それはこのようになります
<?xml version='1.0' encoding='UTF-8'?>
<wsdl:definitions
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:ns="http://www.test.com/DataService.xsd"
xmlns:wsc="http://www.test.com/DataService.xsd"
xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
targetNamespace="http://www.test.com/DataService.xsd">
<wsdl:types>
<xs:schema
xmlns="http://test.com/abc/DataService/xyz"
attributeFormDefault="unqualified"
elementFormDefault="qualified"
targetNamespace="http://test.com/abc/DataService/xyz">
<xs:complexType name="timeseriesValues">
<xs:sequence>
<xs:element name="id" type="xs:string" />
<xs:element name="res">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="day" />
<xs:enumeration value="hour" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="quality" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="prognosis"/>
<xs:enumeration value="allocation"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element maxOccurs="unbounded" minOccurs="0" name="timeseries">
<xs:complexType>
<xs:sequence>
<xs:element name="time" type="xs:dateTime" />
<xs:element name="value" type="xs:double" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:schema>
<xs:schema
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.test.com/DataService.xsd"
xmlns:xyz="http://test.com/abc/DataService/xyz"
attributeFormDefault="qualified"
elementFormDefault="qualified"
targetNamespace="http://www.test.com/DataService.xsd">
<xs:import namespace="http://test.com/abc/DataService/xyz" />
<xs:element name="sendPreise" type="xyz:timeseriesValues" />
<xs:element name="sendPreiseResponse" type="xs:anyType" />
<xs:element name="sendTemp" type="xyz:timeseriesValues" />
<xs:element name="sendTempResponse" type="xs:anyType" />
</xs:schema>
</wsdl:types>
<wsdl:message name="sendTempResponse">
<wsdl:part name="sendTempResponse" element="wsc:sendTempResponse">
</wsdl:part>
</wsdl:message>
<wsdl:message name="sendTemp">
<wsdl:part name="parameters" element="ns:sendTemp">
</wsdl:part>
</wsdl:message>
<wsdl:message name="sendPreise">
<wsdl:part name="parameters" element="ns:sendPreise">
</wsdl:part>
</wsdl:message>
<wsdl:message name="sendPreiseResponse">
<wsdl:part name="sendPreiseResponse" element="wsc:sendPreiseResponse">
</wsdl:part>
</wsdl:message>
<wsdl:portType name="event_PortType">
<wsdl:operation name="sendPreise">
<wsdl:input name="sendPreise" message="wsc:sendPreise">
</wsdl:input>
<wsdl:output name="sendPreiseResponse" message="wsc:sendPreiseResponse">
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="sendTemp">
<wsdl:input name="sendTemp" message="wsc:sendTemp">
</wsdl:input>
<wsdl:output name="sendTempResponse" message="wsc:sendTempResponse">
</wsdl:output>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="event_Binding" type="wsc:event_PortType">
<wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
<wsdl:operation name="sendPreise">
<wsdlsoap:operation soapAction="sendPreise" />
<wsdl:input name="sendPreise">
<wsdlsoap:body parts="parameters" use="literal" />
</wsdl:input>
<wsdl:output name="sendPreiseResponse">
<wsdlsoap:body parts="sendPreiseResponse" use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="sendTemp">
<wsdlsoap:operation soapAction="sendTemp" />
<wsdl:input name="sendTemp">
<wsdlsoap:body parts="parameters" use="literal" />
</wsdl:input>
<wsdl:output name="sendTempResponse">
<wsdlsoap:body parts="sendTempResponse" use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="event">
<wsdl:port name="event_Port" binding="wsc:event_Binding">
<wsdlsoap:address location="http://TEST:80/WS/" />
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
これはバグですか、誰かがこれを行う理由を教えてもらえますか?
これはルート要素の名前です。
timeseries
sendTempまたはsendPreise。
リクエストは "sendTemp"または "sendPreise"ですが、次にシリアル化問題が発生します。
スキーマを定義していますsendPreiseタイプ= timeseriesvalues sendTempタイプ= timeseriesvalues
しかし、唯一の "timeseriesvaluesを" ルート要素の名前が作品として。
あなたの問題は、正確に何ですか? idは文字列として定義されているため、インスタンスを生成するときには期待どおりに動作します。どのような他のフィールドに問題がありますか? – Dijkgraaf
私があなたに答えたオプション(Add> Add Generated Items> WCFサービスを消費する)を使ってインスタンスを生成すると、このXML xyz:id_0 ... これでは必要なのは何ですか? –
felixmondelo