WCF方法没有接收参数

时间:2012-12-13 10:47:14

标签: c# .net wcf

我有一个没有接收请求参数的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)

我可以发现差异,但我无法理解为什么第一个有效,第二个没有。

我该怎么做才能让它发挥作用?

感谢。

1 个答案:

答案 0 :(得分:3)

似乎xmlns=的XML命名空间(<consultaValeCompra>属性)不同:

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

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

编辑:更正回答:
您应该检查服务类的ServiceContract属性。在服务器端和客户端将它设置为相同的命名空间。例如:

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

或重新生成您的服务客户端。