【问题标题】:WCF and error handling , best practicesWCF 和错误处理,最佳实践
【发布时间】:2011-12-13 14:42:49
【问题描述】:

我有一个理论问题。我有一个需要与 .NET 客户端和 iPhone 应用程序通信的 WCF Web 服务。

在服务中我有很多方法,例如:

User Login(string email,string password); etc..

如果成功,我希望服务将用户返回给我。否则,我希望服务向我抛出一个自定义异常,例如 EmailNotFoundExceptionPasswordNotCorrectException

有人告诉我这不是最好的方法,尤其是因为 iPhone 客户会使用这项服务。

我是否应该更改所有方法以返回一些包含Object 和错误字符串/异常对象的WrapperEntity

这对我很重要,因为有时我需要知道操作失败的原因。如果Login 返回 null 我会知道操作失败但我不知道为什么。

【问题讨论】:

  • 您可以使用常规的 Try Catch 异常或 RaiseExceptions 来处理 null 异常,如果您不确定并且不想假设 Invoking 调用/方法将始终通过.. 规则经验法则是将所有内容包装在 Try catch 或 try catch finally

标签: c# asp.net .net wcf web-services


【解决方案1】:

您不应在 WCF 服务中使用异常来定期与您的服务的使用者进行通信。相反,请考虑创建一个响应对象,其中包含您需要了解的有关操作的所有信息。

类似:

public class LoginResponse
{
    public User User { get; set; }
    public string Message { get; set; }
    public bool IsSuccessful
    {
        get { return User != null; }
    }
}

然后您的登录操作将如下所示:

LoginResponse Login(string email, string password)
{ ... }

这样,如果操作失败,您可以在响应中添加一条消息来解释原因。

【讨论】:

    【解决方案2】:

    http://msdn.microsoft.com/en-us/library/ms752208.aspx 是“真正的”WCF 错误处理方式,但可能不适合您的情况。 您可以使用 erros 的 cods 或某种 Error 类实例作为响应字段,如果成功则为 null ...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-09-12
      • 2017-11-26
      • 2010-11-16
      • 1970-01-01
      • 2016-06-06
      • 1970-01-01
      • 2011-07-28
      相关资源
      最近更新 更多