处理业务逻辑层中的业务规则例外

时间:2016-01-19 05:19:09

标签: c# asp.net-mvc architecture class-library n-tier-architecture

在我的ASP.NET MVC应用程序中处理业务逻辑违规/异常的最佳方法是什么?我是否使用Http状态代码抛出异常?

在我的申请中,我有多个项目,例如MVC,业务逻辑,DAL /基础设施等

让我们说,我收到了一位无权查看该信息的用户的请求。我发现用户未在业务逻辑层中获得授权,这是一个类库项目。告诉MVC前端用户无权获取该信息的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

验证用户是否被授权的最佳方法是控制器或操作级别。这意味着,使用Authorize属性装饰您的控制器或操作,并指定用户/角色可以访问的属性。它不应该处于业务逻辑级别。

必须使用数据注释进行验证,例如必填字段,数据类型,范围验证等,并通过Javascripts进行验证,以进行客户端验证。

对于其他业务验证(例如,如果某些内容在数据库级别失败,或某些业务逻辑violdation),最好的方法是在业务层中编写验证逻辑并抛出异常。理想情况下,您的MVC项目应该处理异常并显示一个公共错误页面,并使用ELMAH或NLOG等软件包记录事件日志或数据库或文件系统中的错误。