wcf out参数问题

手抓宝 2010-08-11 10:12:09
在wcf中使用out参数:

public string xxxxx(out string ErrorMessage){}


更新服务引用的时候并没有更新过来,在sl客户端无法使用,请问如何解决

另:在sl中接收wcf中的异常都有哪些简单的方法?最常用的方法是什么?谢谢
...全文
286 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zggaoshou 2011-02-12
  • 打赏
  • 举报
回复
又学到一招了。哈哈。。。
Sunpire 2010-08-11
  • 打赏
  • 举报
回复
没用过 out ,用的都是 ref ,不知道 out 能不能用,貌似也应可以,记得 [OperationContract]。

[OperationContract]
public string xxxxx(ref string ErrorMessage){}


通过代理异步调用WCF时,官方的例子是形如

this.xxClient.XXXXXXXCreateCompleted += (sender, e) =>
{
if(e.Error == null)
{
// 对 e.Result 进行处理
}
else
{
// 对 e.Error 进行处理
}
};

e.Error 便是异常,包括WCF服务端关闭等网络错误所引发的异常。
当然,不使用 e.Error 直接使用 try...catch... 也可以。
healer_kx 2010-08-11
  • 打赏
  • 举报
回复
WCF异常,要把Service的异常也暴露出来,sl才能收到了。
而且我记得,第一个参数是返回值。一般是用参数返回错误码一类的,而不是用异常。
Sunpire 2010-08-11
  • 打赏
  • 举报
回复
是的,ref也是这样的。一直就是这么用的。

但是同步方法就不是这样。
手抓宝 2010-08-11
  • 打赏
  • 举报
回复
哦了,后来跟断点发现,out参数并没有无效,而是作为了e的一个属性反给了客户端,类似这样:

wcf:

[OperationContract]
public string xxxxx(out string ErrorMessage){}


sl:

this.xxClient.XXXXXXXCreateCompleted += (sender, e) =>
{
if(e.ErrorMessage== "")
{
// 对 e.Result 进行处理
}
else
{
// 对 e.Error 进行处理
}
};



写了out参数后更新服务引用,客户端Completed方法的参数e就多了一个ErrorMessage属性,而不是显示的在Async方法中传入out参数

8,735

社区成员

发帖
与我相关
我的任务
社区描述
WPF/Silverlight相关讨论
社区管理员
  • WPF/Silverlight社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧