ASP.NET MVC 中,我们通常把身份验证和通用处理的代码放在 FilterAttribute 或者 BaseController 中
然后可能会遇到一个问题,假如你的代码是:
protected override void OnAuthorization(AuthorizationContext filterContext)
{
var user = GetUser();
if(user == null)
{
filterContext.HttpContext.Response.Redirect("Home");
}
int userID = user.ID;
}
本来Redirect后应该不执行下面的代码,但在MVC中代码可能会被执行,就会产生 ”未将对象应用设置到实例“的错误
所以,在这个地方,应该使用对应的Redirect方法,如下:
filterContext.Result = new RedirectResult("Home");
换成这种写法以后,后面的代码就不会执行了。
end