没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
全文可编辑 word 文档 页眉与背景水印可删除
1
ASP.NET MVC 下基于异常处理的完整解决方
案总结
EntLib 的 异 常 处 理 应 用 块 ( Exception Handling
Application Block)是一个不错的异常处理框架,它使我们
可以采用配置的方式来定义异常处理策略。而 ASP.NET MVC
是一个极具可扩展开发框架,在这篇文章中我将通过它的扩
展实现与 EntLib 的集成,并提供一个完整的解决异常处理
解决方案。
一、基本异常处理策略
我们首先来讨论我们的解决方案具体采用的异常处理
策略:
对于执行 Controller 的某个 Action 方法抛出的异常,
我们会按照指定配置策略进行处理。我们可以采取日志记录、
异常替换和封装这些常用的异常处理方式;
对于处理后的异常,如果异常处理策略规定需要将其抛
出,则会自动重定向到与异常类型匹配的出错页面。我们会
维护一个异常类型和 Error View 的匹配关系;
全文可编辑 word 文档 页眉与背景水印可删除
2
对于处理后的异常,如果异常处理策略规定不需要将其
抛出,则会执行与当前 Action 操作相匹配的错误处理 Action
进行处理。异常处理 Action 方法默认采用“On{Action}Error”
这样的命名规则,而当前上下文会与异常处理操作方法的参
数进行绑定。除次之外,我们会设置当前 ModelState 的错
误信息;
如果用户不曾定义相应的异常处理 Action,依然采用
“错误页面重定向”方式进行异常处理。
二、通过自定义 Action 处理异常
为了让读者对上面介绍的异常处理页面有一个深刻的
理解,我们来进行一个实例演示。该实例用于模拟用户登录,
我们定义了如下一个只包含用户名和密码两个属性的 Model:
LoginInfoModel。
namespace Artech.Mvc.ExceptionHandling.Models
{
public class LoginInfo
{
[Display(Name ="User Name")]
[Required(ErrorMessage = "User Name is
manadatory!")]
public string UserName { get; set; }
全文可编辑 word 文档 页眉与背景水印可删除
3
[Display(Name = "Password")]
[DataType(DataType.Password)]
[Required(ErrorMessage = "Password is
manadatory!")]
public string Password { get; set; }
}
}
我们定义了如下一个 AccountController,它是我们自
定义的 BaseController 的子类。AccountController 在构造
的时候调用基类构造函数指定的参数代表异常处理策略的
配置名称。SignIn 方法代表用于进行“登录”的操作,而
OnSignInError 就表示该操作对应的异常处理操作。如果在
SignIn 操作中抛出的异常经过处理后无需再抛出,则会通过
调用 OnSignInError,而此时 ModelState 已经被设置了相应
的错误消息。
public class AccountController BaseController
{
public AccountController()
base("myPolicy")
{ }
全文可编辑 word 文档 页眉与背景水印可删除
4
public ActionResult SignIn()
{
return View(new LoginInfo());
}
[HttpPost]
public ActionResult SignIn(LoginInfo
loginInfo)
{
if (!ModelState.IsValid)
{
return this.View(new LoginInfo
{ UserName = loginInfo.UserName });
}
if (loginInfo.UserName != "Foo")
{
throw new
InvalidUserNameException();
}
if (loginInfo.Password != "password")
{
全文可编辑 word 文档 页眉与背景水印可删除
5
throw new
UserNamePasswordNotMatchException();
}
ViewBag.Message = "Authentication
Succeeds!";
return this.View(new LoginInfo { UserName
= loginInfo.UserName });
}
public ActionResult OnSignInError(string
userName)
{
return this.View(new LoginInfo { UserName
= userName });
}
}
具体定义在 SignIn 操作方法中的认证逻辑是这样的:
如果用户名不是“Foo”则抛出 InvalidUserNameException
异 常 ; 如 果 密 码 不 是 “password” 则 抛 出
UserNamePasswordNotMatchException 异常。下面是 SignIn
操作对应的 View 的定义:
剩余27页未读,继续阅读
资源评论
mmoo_python
- 粉丝: 0
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于matlab开发的根据rvm回归模型自己编的matlab程序.rar
- 高效C++学生成绩管理系统:教育技术+C++17编程+数据管理+教务自动化
- 基于matlab开发的Tipping的相关向量机RVM的回归MATLAB程序,有英文注释,可以运行.rar
- 一个点击正反转程序实例,可实现案件电机正反转
- 搜索链接淘特搜索引擎共享版-tot-search-engine.rar
- 第十八届全国大学生智能汽车竞赛 摄像头组/镜头组
- 基于matlab开发的AUV惯性导航系统matlab仿真程序,包括轨迹生成、gps和sins组合、gps和dvl组合.rar
- 基于SSM的“个性化电子相册”的设计与实现.zip
- 如何在撰写科研文献时,使用ai工具辅助去完成科研工作
- 吉林大学计组笔记 自用 基于b站翼云图灵的课.pdf
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功