代理类更改参数的顺序,将param作为第一个输出

时间:2011-08-04 19:45:09

标签: wcf windows-services

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

bool MyMethod(string MyParam1, string MyParam2, out string MyParam3)

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

bool MyMethod(out string MyParam3, string MyParam1, string MyParam2)

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

1 个答案:

答案 0 :(得分:4)

没有错,代理也可以使用服务 - 从客户端到服务器的消息不包含out参数,因此MyParam1和{{1}的顺序是预期的;在输出消息(来自服务器的响应)中,out参数是正文中的唯一参数(除了返回值)。

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

更新:在客户端使用.Net 4.5时不再出现此问题。保持参数顺序。