2015-04-16 73 views
2

我試圖做一個重定向,我有一個singleton類,它是我的配置類,拿起關於此的信息並騎我的conectionString,我保存在加密文件中的這些數據,我我正在使用session-per-request,然後在掛載我需要檢查會話配置文件之前,如果沒有我拋出異常。從Application_Error重定向頁面時出現錯誤

protected void Application_BeginRequest() 
{ 
    if (!Settings.Data.Valid()) 
     throw new SingletonException(); 

    var session = SessionManager.SessionFactory.OpenSession(); 
    if (!session.Transaction.IsActive) 
     session.BeginTransaction(IsolationLevel.ReadCommitted); 

    CurrentSessionContext.Bind(session); 
} 

如果除了我必須重定向到設置頁面,這是一個單例類。

protected void Application_Error(Object sender, EventArgs e) 
{ 
    Exception exc = Server.GetLastError(); 
    while (exc != null) 
    { 
     if (exc.GetType() == typeof(SingletonException)) 
     { 
      Response.Redirect(@"~/Settings/Index"); 
     } 

     exc = exc.InnerException; 
    } 
} 

但是我有這個重定向問題,在瀏覽器中的鏈接被改變,但我有一個重定向循環,已經嘗試清除cookie並啓用外部網站的選項。 enter image description here 有人可以幫助我嗎?

回答

1

只需設置的Application_BeginRequest的不要讓什麼是無效時。

protected void Application_BeginRequest() 
     { 
      if (!Settings.Data.Valid()) 
       return; 

      var session = SessionManager.SessionFactory.OpenSession(); 
      if (!session.Transaction.IsActive) 
       session.BeginTransaction(IsolationLevel.ReadCommitted); 
      CurrentSessionContext.Bind(session); 
     } 
2

問題是你正在使用while循環所以它是無限循環,如果excnull,你必須使用if條件在這裏:

if(exc != null) 
{ 
    if (exc.GetType() == typeof(SingletonException)) 
    { 
     Response.Redirect(@"~/Settings/Index"); 
    } 

    exc = exc.InnerException; 
} 
+0

雖然我爲了得到了firts異常,導致第一個錯誤不是我的拋出。 http://imgur.com/aPOT5pg,我刪除了redirec只是爲了展示你,我也嘗試過讓它與if。 –