2

リクエスト パラメータを受信して​​いない WCF メソッドがあります。しかし、WCFTest クライアント (Visual Studio に付属のクライアント) を使用すると、メソッドはパラメーターを受け取ります。

リクエストをキャプチャすると、非常によく似ています。

リクエストがこれである場合、それは機能します:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
    <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
        <consultaValeCompra xmlns="http://tempuri.org/">
            <dataMovto>1</dataMovto>
            <numSeqOperacao>2</numSeqOperacao>
            <numDocumento>3</numDocumento>
            <valorDocumento>4</valorDocumento>
            <tipo>5</tipo>
            <codPreVenda>6</codPreVenda>
        </consultaValeCompra>
    </s:Body>
</s:Envelope>

リクエストがこれの場合、パラメータを取得できません:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <soapenv:Body>
        <consultaValeCompra xmlns="http://valeCompra/jaws">
            <dataMovto>121212</dataMovto>
            <numSeqOperacao>003719</numSeqOperacao>
            <numDocumento>000000000000005555466465454546</numDocumento>
            <valorDocumento>000046400</valorDocumento>
            <tipo>0</tipo>
            <codPreVenda>0000000000</codPreVenda>
        </consultaValeCompra>
    </soapenv:Body>
</soapenv:Envelope>

メソッドのシグネチャは次のとおりです。

public Retorno consultaValeCompra(string dataMovto, string numSeqOperacao, string numDocumento, string valorDocumento, string tipo, string codPreVenda)

違いを見つけることはできますが、最初の機能と 2 番目の機能が機能しない理由がわかりません。

機能させるにはどうすればよいですか?

ありがとう。

4

1 に答える 1

3

のXML名前空間(xmlns=属性)<consultaValeCompra>が異なるようです:

<consultaValeCompra xmlns="http://tempuri.org/">

<consultaValeCompra xmlns="http://valeCompra/jaws">

編集:正解:サービスクラスの属性を
確認する必要があります。ServiceContractサーバー側とクライアント側の両方で同じ名前空間に設定します。例えば ​​:

[ServiceContract(Namespace = "http://valeCompra/jaws")]
public class MyService
{
     [...]
}

または、サービスクライアントを再生成します。

于 2012-12-13T10:54:29.070 に答える