asp.net-mvc-2 – 处理DDD风格的ASP.Net MVC2 Web应用程序中的错误

在DDD设计的ASP.NET MVC2 Web应用程序中,有关错误处理的“最佳实践”是什么?例如,让我们采用Web应用程序最常见的方面,即登录

> UserController:显然是坐标
一些域对象最终
登录或拒绝用户,以及
重定向到网络的其他部分
根据需要界面.在我的情况下,它是
一些调用不同的UserTasks
像IsLoggedIn()或LogIn()这样的方法,
加上一些RedirectToAction.
> UserTasks:有工作的肉
协调相关领域
对象服务,比如
SecurityService和较低域
对象,例如调用
SecurityService.ValidateUser()或
检查User.IsUserInactive().
> SecurityService:显然
坐标
认证/授权
服务.类似于
MembershipProvider,没有
超重行李.
> User:表示用户.不
贫血,因为它有各种各样的
用户特定的方法,如
IsuUserInactive()检查
IsDeleted,IsLockedOut或者如果是用户
介于FromDt和ThruDt之间.

你如何冒泡错误,使他们提供信息,而不是对用户充满敌意?您是否使用异常丢弃代码然后只在Application_Error()中处理它们?例如,当密码为空时,ValidateUser()抛出一个ArgumentNullException(),当密码不正确时,抛出一个AuthenticationException(),或者返回一个bool = false?如果是后者,您如何告知用户导致验证失败的原因?

解决方法

我假设您正在使用基于我看到的命名约定的WhoCanHelpMe / S#arp架构?如果是这样,我强烈建议您查看 this article,其中介绍了更清洁的应用程序服务层的实现.看一下从服务层返回的ActionConfirmation结果;我们发现这是从Tasks层返回一个不太讨厌的错误结果的理想方法.

相关文章

### 创建一个gRPC服务项目(grpc服务端)和一个 webapi项目(...
一、SiganlR 使用的协议类型 1.websocket即时通讯协议 2.Ser...
.Net 6 WebApi 项目 在Linux系统上 打包成Docker镜像,发布为...
一、 PD简介PowerDesigner 是一个集所有现代建模技术于一身的...
一、存储过程 存储过程就像数据库中运行的方法(函数) 优点:...
一、Ueditor的下载 1、百度编辑器下载地址:http://ueditor....