2012-02-16 60 views
1

我試圖將用戶引導到某個網頁上我的網站(VB,MVC4)在給定的條件是假的,但我不斷收到一個重定向循環:重定向循環中OnActionExecuting

Error 310 (net::ERR_TOO_MANY_REDIRECTS): There were too many redirects.

這裏是我的代碼:

Public Class UserValidation 
    Inherits ActionFilterAttribute 

    Public Overrides Sub OnActionExecuting(filterContext As System.Web.Mvc.ActionExecutingContext) 

     If Not DoSomeInternalCheck() Then 
      filterContext.Result = 
       New RedirectToRouteResult(
        New RouteValueDictionary() From { 
         {"controller", "Home"}, 
         {"action", "MessagePage"} 
        } 
       ) 
     End If 

     MyBase.OnActionExecuting(filterContext) 

    End Sub 

End Class 

我是什麼,以保持用戶離開網站的其餘部分,只有讓他們看到這個頁面失蹤?

回答

6

您需要更改此篩選器,以便不會重定向用戶,如果他們正在訪問您要重定向到的主頁!

重定向結果會向瀏覽器發送一條消息,指出「轉到此其他網址」。當他們轉到另一個URL時,他們的請求會通過相同的過濾器,告訴他們「轉到此URL [與以前相同]」。最終,瀏覽器放棄並且(正確地)表示您可能已經觸及某種無限重定向循環。

+0

我認爲這是問題,但我不知道如何進行檢查。我試過檢查filterContext是否失敗,看看這是否是「Home/MessagePage」請求,但至今沒有運氣。我相信我只是做錯了。 – gfrizzle 2012-02-16 15:50:53

+0

@gfrizzle:嘗試在'OnActionExecuting'的開頭設置一個斷點,並在'filterContext'上使用監視來查看哪些信息可用,以及Home/MessagePage請求中的信息是什麼樣的。從這個角度來看,提出一個會忽略特定頁面的標準應該相當簡單。 – StriplingWarrior 2012-02-16 15:55:49