c# - WCF和错误处理,最佳实践

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

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

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

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

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

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

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

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

最佳答案

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

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

关于c# - WCF和错误处理,最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8491044/

相关文章:

c# - 未被 Global.asax 错误处理程序或自定义 IHttpModule 错误处理程序捕获的未处理异常

.net - System.Net.WebClient.DownloadFile() 是否分块读取下载的文件?

.net - 使用参数从 HTML 启动应用程序

c# - 如何检查旋转方向是否不为0且与上一次旋转方向不同?

c# - .NET TCP 服务器稳定性问题

asp.net - 如何在 Visual Studio 2010 中打开 IntelliSense?

asp.net - 如何从 ASP.NET 代码将变量获取到 Silverlight 3 控件中?

ASP.NET web 应用程序中的 Javascript 消息框

c# - 使用 PST/CEST/UTC/等形式的时区解析 DateTime

c# - 在 MVC 中的实体中创建新对象的操作方法中的 RedirectToAction