WCF和错误处理,最佳实践

ibm*_*123 2 .net c# asp.net wcf web-services

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

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

User Login(string email,string password); etc..
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

Jim*_*elo 6

您不应在WCF服务中使用例外来定期与服务的使用者通信.相反,请查看创建一个响应对象,其中包含您需要了解的有关操作的所有信息.

就像是:

public class LoginResponse
{
    public User User { get; set; }
    public string Message { get; set; }
    public bool IsSuccessful
    {
        get { return User != null; }
    }
}
Run Code Online (Sandbox Code Playgroud)

然后您的登录操作将类似于:

LoginResponse Login(string email, string password)
{ ... }
Run Code Online (Sandbox Code Playgroud)

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