asp.net mvc中在Filter中跳转千万不要使用Response.Redirect

来源:互联网 发布:游戏王巅峰知乎 编辑:程序博客网 时间:2024/05/30 13:43

如题,如果在Filter中用Response.Redirect,虽然URL是跳转了,但是之后的Filter和Action还是会执行,不仅浪费资源,还会产生一些不必要的错误,或许,这些错误仅在你的错误日志中能看到。

 

在Filter中错误使用跳转如下:


filterContext.HttpContext.Response.Redirect(string.Format("{0}#{1}",
                                                                              filterContext.HttpContext.Request.Url.
                                                                                  AbsolutePath,
                                                                              filterContext.HttpContext.Request.
                                                                                  QueryString["r_Anchor"]));

filterContext.HttpContext.Response.Redirect就会产生后遗症,正确使用应该是:

filterContext.Result = new RedirectResult(string.Format("{0}#{1}",
                                                                              filterContext.HttpContext.Request.Url.
                                                                                  AbsolutePath,
                                                                              filterContext.HttpContext.Request.
                                                                                  QueryString["r_Anchor"]));

正确代码: