2

リダイレクトを実行しようとしています。構成クラスであるシングルトン クラスがあり、これに関する情報を取得して、conactionString に乗ります。暗号化されたファイルに保存したこのデータは、session-per-request を使用しています。マウントする前に、セッション構成ファイルを確認する必要がある場合は、例外をスローします。

 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 をクリアして、外部サイトのオプションを有効にしようとしています。 ここに画像の説明を入力 誰かが私を助けることができますか?

4

2 に答える 2

2

問題は、ループを使用しているため、そうでないwhile場合は無限ループです 。ここで条件を使用する必要があります。excnullif

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

  exc = exc.InnerException;
}
于 2015-04-16T12:32:52.357 に答える