5

事前定義された着信SOAP/XMLメッセージを受け入れるWebサービスをセットアップしようとしています。送信されるクライアントコードまたはSOAPメッセージを制御できません。簡単な例を試していますが、問題があります。これがSOAPメッセージであるとしましょう。

    <?xml version="1.0" encoding="UTF-8"?>
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
  <env:Body>
    <CustomerRequest xmlns="http://tempuri.org">
      <Customer>
        <FirstName>John</FirstName>
        <LastName>Doe</LastName>
      </Customer>
    </CustomerRequest>
  </env:Body>
</env:Envelope>

そして、データコントラクトを持つ私のオブジェクト:

[DataContract(Name = "Customer", Namespace = "http://tempuri.org")]
public class Customer
{
    [DataMember]
    public string FirstName { get; set; }

    [DataMember]
    public string LastName { get; set; }
}

サービスインターフェイス:

[ServiceContract(Namespace = "http://tempuri.org")]
public interface IService1
{
    [OperationContract(Action="*")]
    [WebInvoke(Method = "POST")]
    bool Customer(Customer customer);
}

SOAPリクエストを送信すると、フィドラーですべてを表示でき、問題ないように見えます。しかし、それが私のコードにヒットすると、Customerオブジェクトはnullになります。とてもシンプルなものが欠けているような気がします。

生のリクエストもあります:

POST http://127.0.0.1.:3619/Service1.svc HTTP/1.1
SOAPAction: http://tempuri.org/IService1/Customer
Content-Type: text/xml;charset=utf-8
Host: 127.0.0.1.:3619
Content-Length: 339
Expect: 100-continue
Connection: Keep-Alive

<?xml version="1.0" encoding="UTF-8"?>
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
  <env:Body>
    <CustomerRequest xmlns="http://tempuri.org">
      <Customer>
        <FirstName>John</FirstName>
        <LastName>Doe</LastName>
      </Customer>
    </CustomerRequest>
  </env:Body>
</env:Envelope>
4

1 に答える 1

2

CustomerRequest私はあなたのインターフェースやサービスの実装に言及を見ることができません。CustomerSOAPリクエストはではなく送信する必要があると思いますCustomerRequest。これは、SOAPUIを使用し、WSDLに基づいてサンプルリクエストを生成することで確認できます。リクエストが実際にどのように表示されるかを教えてくれます。

于 2012-10-03T09:30:52.787 に答える