1

一部のSOAPヘッダー要素をnillableにできるようにしたいと思います。これはbody要素でも可能ですが、ヘッダー要素から許可されているかどうかはわかりません。

以下のサンプルメッセージでは、MessageDateTimeをnullにできるようにしたいと思います。

<definitions  xmlns="http://schemas.xmlsoap.org/wsdl/"
              xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl"
              xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
              xmlns:tns="http://mycompany.com/repositoryservice">
  <types>
    <schema xmlns="http://www.w3.org/2001/XMLSchema"
            attributeFormDefault="qualified"
            elementFormDefault="qualified"
            targetNamespace="http://mycompany.com/repositoryservice">
      <element name="MessageDateTime" type="dateTime" />
      <element name="SaveRequest">
        <!-- complexType -->
      </element>
    </schema>
  </types>
  <message name="SaveRequest_Headers">
    <part name="MessageDateTime" element="tns:MessageDateTime" />
  </message>
  <message name="SaveRequest">
    <part name="parameters" element="tns:SaveRequest" />
  </message>
  <binding name="RepositoryServiceBinding" type="tns:IRepositoryService">
    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" />
    <operation name="Save">
      <soap:operation soapAction="http://mycompany.com/repositoryservice/Save" style="document" />
      <input name="SaveRequest">
        <soap:header message="tns:SaveRequest_Headers" part="MessageDateTime" use="literal" />
        <soap:body use="literal" />
      </input>
    </operation>
  </binding>
  <!-- service, portType -->
</definitions>
4

1 に答える 1

1

定義で許可されている限り許可されます。あなたの場合、nillable="true"要素の定義に を追加するだけです。WCF を使用した .NET での結果は次のようになります。

    [System.ServiceModel.MessageHeaderAttribute(Namespace="...")]
    [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]
    public System.Nullable<System.DateTime> MessageDateTime;
于 2012-10-09T22:17:53.397 に答える