WCF和错误处理,最佳实践

时间:2011-12-13 14:42:49

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

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

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

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

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

我被告知这不是最好的方法,特别是因为iPhone客户端会使用这项服务。

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

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

2 个答案:

答案 0 :(得分:6)

您不应在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)
{ ... }

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

答案 1 :(得分:0)

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