1

WebService プロパティの順序付けの非常に奇妙な動作があります。

次の WSDL を公開する WebService があります。

    ...
<s:complexType name="WsProgramPackage">
        <s:sequence>
          <s:element minOccurs="1" maxOccurs="1" name="ProgramPackageID" nillable="true" type="s:int" />
          <s:element minOccurs="1" maxOccurs="1" name="ProgramID" nillable="true" type="s:int" />
          <s:element minOccurs="1" maxOccurs="1" name="PackageID" nillable="true" type="s:int" />
          <s:element minOccurs="1" maxOccurs="1" name="Layer" nillable="true" type="s:int" />
          <s:element minOccurs="1" maxOccurs="1" name="ProgramOffset" nillable="true" type="s:decimal" />
          <s:element minOccurs="1" maxOccurs="1" name="PackageOffset" nillable="true" type="s:decimal" />
          <s:element minOccurs="1" maxOccurs="1" name="Duration" nillable="true" type="s:int" />
          <s:element minOccurs="1" maxOccurs="1" name="IsDynamic" nillable="true" type="s:boolean" />
          <s:element minOccurs="1" maxOccurs="1" name="IsVisible" nillable="true" type="s:boolean" />
          <s:element minOccurs="1" maxOccurs="1" name="AllowSkip" nillable="true" type="s:boolean" />
          <s:element minOccurs="1" maxOccurs="1" name="ProgramUID" nillable="true" type="s1:guid" />
          <s:element minOccurs="1" maxOccurs="1" name="PackageUID" nillable="true" type="s1:guid" />
        </s:sequence>
      </s:complexType>
    ...

また、次の SOAP 応答を返す必要があります

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <GetProgramByIDResponse xmlns="ws.kitd.vx2.ws.cms">
      <GetProgramByIDResult>
        <ThumbnailURL>string</ThumbnailURL>
        <TrailerURL>string</TrailerURL>
        <ProgramPackages>
          <WsProgramPackage>
            <ProgramPackageID>int</ProgramPackageID>
            <ProgramID>int</ProgramID>
            <PackageID>int</PackageID>
            <Layer>int</Layer>
            <ProgramOffset>decimal</ProgramOffset>
            <PackageOffset>decimal</PackageOffset>
            <Duration>int</Duration>
            <IsDynamic>boolean</IsDynamic>
            <IsVisible>boolean</IsVisible>
            <AllowSkip>boolean</AllowSkip>
            <ProgramUID>guid</ProgramUID>
            <PackageUID>guid</PackageUID>
          </WsProgramPackage>
...

SOAP UI でこのメソッドを呼び出そうとすると、応答のフィールドの順序が異なります。

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <soap:Body>
      <GetProgramByIDResponse xmlns="ws.kitd.vx2.ws.cms">
         <GetProgramByIDResult>
            <ThumbnailURL>http://origin.pmt.ovivo.ru/2f/59/2f59465e-7aa0-4188-9f2f-2904f92cced7.35557.203a5d20f56693df382b610354605ebf</ThumbnailURL>
            <ProgramPackages>
               <WsProgramPackage>
                  <ProgramPackageID>269310</ProgramPackageID>
                  <ProgramID>5190</ProgramID>
                  <PackageID>8855</PackageID>
                  <ProgramUID>ec62f0a5-c10e-4ac5-bb95-c5ab3ac6f150</ProgramUID>
                  <PackageUID>61d77ef1-495f-4ec8-9fac-3170a9705483</PackageUID>
                  <Layer>0</Layer>
                  <ProgramOffset>0.000</ProgramOffset>
                  <PackageOffset>0.000</PackageOffset>
                  <Duration>9469</Duration>
                  <IsDynamic>false</IsDynamic>
                  <IsVisible>false</IsVisible>
                  <AllowSkip>false</AllowSkip>
               </WsProgramPackage>
            </ProgramPackages>
...

WSDL では ProgramUID と PackageUID は最後のフィールドですが、応答では 3 と 4 の位置にあります。

応答が WSDL に記述されているものと異なる可能性はありますか。また、この順序を何らかの方法で修正することは可能ですか。

PS これは単純な古い C# WebService であり、WCF ではありません。

4

0 に答える 0