これもまたハマりました。
ASP.NETの簡易エラーページを表示させようと、Web.configに以下を設定しました。
<configuration>
<system.web>
<customErrors mode="On" defaultRedirect="Error.html" />
<system.web>
<configuration>
この状態でログインページを表示し、DBの接続文字列を不正なものにして接続エラーを出してみたんですが、指定したリダイレクトページが出ませんでした。あと挙動がとてもおかしいいです。
1. ログインする
2. セッションエラーが出てまたログインを迫られる
3. またログインする
4. ASP.NETデフォルトのエラーページが表示される
???
Error.htmlはどこいった?
ずっと原因が判らずハマってたのですが、原因がForm認証にありました。
現在Web.configではこんなようなForm認証を設定しています。
<authentication mode="Forms">
<forms loginUrl="~/Login.aspx" name=".ASPXFORMSAUTH" timeout="2880" defaultUrl="~/Top.aspx"/>
</authentication>
(略)
Form認証は、認証前はどのページにアクセスしてもデフォルトページに戻す仕様です。
defaultRedirectで設定したエラーページも例外ではありません。
ということでログインのときに接続エラー→エラーページにリダイレクト→Form認証エラでログインページに戻される→またログイン→エラーページにリダイレクト・・・と
そこでループが発生していたのでした。
回避するためにcommonフォルダを除外するなどのエントリも以前書きました。
すぐ思い出せなかったのが悔しい・・・。
そういうわけですので、エラーページをフォーム認証の例外ページにするようWeb.configで設定することでリダイレクトページが正常に機能するようになりました。
こんな感じです。
<location path="Error.html">
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
</location>
※<system.web>の前に入れて下さい。
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。