代理类改变参数的顺序,把param作为第一个

Sil*_*ent 4 wcf windows-services

我有一个 WCF 服务,它公开了一个具有以下签名的方法

bool MyMethod(string MyParam1, string MyParam2, out string MyParam3)
Run Code Online (Sandbox Code Playgroud)

但是当我添加服务引用时,代理类更改参数顺序如下

bool MyMethod(out string MyParam3, string MyParam1, string MyParam2)
Run Code Online (Sandbox Code Playgroud)

它把 param 作为第一个参数。知道为什么会这样吗,或者可能是我做错了什么?

car*_*ira 5

没有什么是错的,代理将能够使用该服务一样好-从客户端到服务器不包含出参数的消息,所以顺序MyParam1MyParam2是预期的; 在输出消息(来自服务器的响应)中,out 参数是正文中唯一的参数(除了返回值)。

引用首先放置输出参数,因为元数据 (WSDL) 仅包含每个消息(输入/输出)的参数,而不包含操作本身的参数,因此“添加服务引用”必须“猜测”参数的位置 - 并且具有它作为操作中的第一个参数与任何其他位置一样好猜测。

更新:在客户端使用 .Net 4.5 时不再发生这种情况。保持参数顺序。