0

.wsdl ファイルと svcutil.exe を使用して、関連する .cs ファイルを生成します。生成された .cs ファイルは次のようになります。

 public partial class mytargettype {

    [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "", Order = 0)]
    [System.Xml.Serialization.XmlArrayAttribute()]
    [System.Xml.Serialization.XmlArrayItemAttribute("item", Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
    public string[] prop1;

    [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "", Order = 1)]
    [System.Xml.Serialization.XmlArrayAttribute()]
    [System.Xml.Serialization.XmlArrayItemAttribute("item", Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
    public string[] prop1;

    [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "", Order = 2)]
    [System.Xml.Serialization.XmlArrayAttribute()]
    [System.Xml.Serialization.XmlArrayItemAttribute("item", Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
    public string[] prop3;

    [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "", Order = 3)]
    [System.Xml.Serialization.XmlArrayAttribute()]
    [System.Xml.Serialization.XmlArrayItemAttribute("item", Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
    public System.Nullable<int>[] prop4;

}

.wsdl ファイルの関連部分は次のとおりです。

 <wsdl:message name="mytargettype">
    <wsdl:part name="prop1" type="ns1:stringArray" />
    <wsdl:part name="prop2" type="ns1:stringArray" />
    <wsdl:part name="prop3" type="ns1:stringArray" />
    <wsdl:part name="prop4" type="ns1:intArray" />
  </wsdl:message>

したがって、生成された .cs ファイルは次のようにする必要があります。

 [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "", Order = 2)]
 [System.Xml.Serialization.XmlArrayAttribute(Namespace = "http://jaxb.dev.java.net/array")]
 [System.Xml.Serialization.XmlArrayItemAttribute("item", Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
 public string[] prop3;

XmlArrayAttributeご覧のとおり、 have Namespace パラメーターが必要です。

.cs ファイルが上記のようになる原因となった .WSDL ファイルに追加する必要がある変更は何ですか。

4

1 に答える 1

0

WSDL のどこかに次のような部分があると思います。

<xs:complexType name="stringArray" final="#all">
    <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" name="item" nillable="true" type="xs:string" />
    </xs:sequence>
</xs:complexType>

これを次のように変更すると、問題が解決する場合があります。

<xs:complexType name="stringArray" wsdl:arrayType="xs:string" mixed="true">
    <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" name="item" nillable="true" type="xs:string" />
    </xs:sequence>
</xs:complexType>
于 2012-11-10T16:10:37.987 に答える