ASP.NET MVC中在 FilterAttribute 或者 BaseController 做 Redirect 跳转代码继续执行问题

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。