我有一个WCF服务,它公开了一个带有以下签名的方法
bool MyMethod(string MyParam1, string MyParam2, out string MyParam3)
但是当我添加服务引用时,代理类会更改参数的顺序,如下所示
bool MyMethod(out string MyParam3, string MyParam1, string MyParam2)
它将param作为第一个参数。知道为什么会这样做,或者可能是我做错了什么?
答案 0 :(得分:4)
没有错,代理也可以使用服务 - 从客户端到服务器的消息不包含out参数,因此MyParam1
和{{1}的顺序是预期的;在输出消息(来自服务器的响应)中,out参数是正文中的唯一参数(除了返回值)。
引用首先输出out参数,因为元数据(WSDL)只包含每条消息的参数(输入/输出),而不包含操作本身的参数,因此“添加服务引用”必须“猜测”参数将在何处 - 并将其作为操作中的第一个参数与任何其他位置一样好。
更新:在客户端使用.Net 4.5时不再出现此问题。保持参数顺序。