1. 程式人生 > >asp.net mvc中在Filter中跳轉千萬不要使用Response.Redirect

asp.net mvc中在Filter中跳轉千萬不要使用Response.Redirect

如題,如果在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"]));

正確程式碼: