gpt4 book ai didi

c# - WCF 方法未接收参数

转载 作者:行者123 更新时间:2023-11-30 22:22:23 24 4
gpt4 key购买 nike

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

我可以发现差异,但我不明白为什么第一个有效而第二个无效。

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

谢谢。

最佳答案

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

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

对比

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

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

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

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

关于c# - WCF 方法未接收参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13858175/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com