none
wcf添加引用生成代码后,方法中的参数变了? RRS feed

  • 问题

  • 在项目中添加WCF引用后,项目中使用到WCF中的方法参数变了,两种错误:

    1、out参数默认为第一个参数,但是更新后out参数在最后了。

    2、参数变成了(服务命名空间.方法名+request request)。

    目前的解决方法:新建一个相同名称的项目然后添加服务引用,然后将服务拷到项目的服务目录下即可。

    2014年7月8日 2:49

全部回复

  • 你好,

    这是一个已知的问题,在客户端 Visual Studio 将WCF service method 的out参数调整到方法的第一位 如下:

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

    不过这不影响正常服务调用。发生这种情况的原因是out 参数不参与参数传递,服务端只会当作一个response的内容,

    而WCF service WSDL不会描述out参数但会描述“MyParam1”, “MyParam2”  (Input or Output)。 不过, 在

     .Net 4.5的客户端不会发生这种情况。

    谢谢!

    2014年7月9日 6:46
    版主
  • 您好,谢谢你的回答。但是在服务未出这样的错误之前是out参数不管写在前面还是后面,项目添加引用后out参数都是在其他参数前面?这是什么情况下出的错误呢?另一种错误情况(方法的参数只剩一个参数(方法名+request request))是怎么回事呢?

    希望您能继续回答!非常感谢

    2014年7月9日 13:33
  • 2014年8月9日 14:54
    版主