我有一个理论问题。我有一个需要与.NET客户端和iPhone应用程序通信的WCF Web服务。
在服务中我有很多方法,如:
User Login(string email,string password); etc..
如果成功,我希望该服务将用户返回给我。否则,我希望该服务向我提出自定义异常,例如EmailNotFoundException
或PasswordNotCorrectException
。
我被告知这不是最好的方法,特别是因为iPhone客户端会使用这项服务。
我是否应该更改所有方法以返回包含WrapperEntity
和错误字符串/异常对象的一些Object
?
这对我很重要,因为有时我需要知道操作失败的原因。如果Login
返回null,我将知道操作失败但我不知道为什么。
答案 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 ...