RIA服务中的异常处理

Dav*_*ita 14 c# silverlight wcf exception-handling wcf-ria-services

如您所知,使用标准WCF服务的FaultException来建议处理异常以隐藏异常详细信息.这没关系,但我遇到了WCF Ria服务的问题.我想从域服务抛出异常,客户端将处理该异常.我想避免泄露异常的敏感信息,如堆栈跟踪,方法名称等.如果它是标准的WCF服务,我会使用FaultException异常,但在Ria服务中,它不起作用.无论我从域服务抛出什么样的异常,客户端总是会收到DomainOperationException.有没有办法可以从域服务向Silverlight客户端抛出FaultException(不透露实际的异常细节)?例如,我有一个登录窗口.当用户点击登录按钮时,应该有几个验证失败,例如:

  • 用户名或密码无效
  • 用户帐户已被锁定
  • 该帐户未激活
  • 等等

我希望每个可能发生的错误都有错误类型.客户端应该检查出错的地方并相应地显示错误消息.我禁用了customErrors但它没有帮助.任何帮助,将不胜感激.谢谢

Dav*_*ita 11

这是科林布莱尔在这里回答我的问题

DomainService有一个名为OnError的可覆盖方法.每当DomainService本身内存在异常(不在WCF代码中)时,异常将在重新抛出之前传递给OnError,以便发送回客户端.如果使用您自己的异常替换传递给OnError方法的DomainServiceErrorInfo中的异常,那么您的异常将被发送回客户端.如果对您的异常使用DomainException,那么您将能够传入一个ErrorCode整数,您可以使用客户端来确定实际错误.

它回答了我的问题和需求.谢谢科林.