NavigateUrl="Default.aspx?Logout=1" を使用して、asp.net HyperLink でログアウト リンクを作成しました。デフォルトの PageLoad で、クエリ文字列が null であるかどうかを確認します。そうでない場合、セッションは終了し、ユーザーはログイン ページとして機能するクエリ文字列なしで同じページにリダイレクトされます。
Default PageLoad のコードは次のとおりです。
if (Request.QueryString["Logout"] != null)
{
FormsAuthentication.SignOut();
Session.Clear();
Session.Abandon();
Response.Redirect("~/Default.aspx", true);
}
VisualStudio から実行すると正常に動作しますが、IIS から実行すると The resource cannot be found エラーが発生します。説明: HTTP 404。探しているリソース (またはその依存関係の 1 つ) は、削除されたか、名前が変更されたか、一時的に利用できない可能性があります。次の URL を見直して、スペルが正しいことを確認してください。要求された URL: /Default.aspx。
その同じページがプログラムの開始ページであり、開始時に呼び出されても問題はありません。デバッグでは、ページの読み込みがアクティブになり、if が入力されているため、問題は Response.Redirect URL にあることがわかりました。~/ または ~ だけを外すか、../ または /ProgramName//Default.aspx を実行しようとしました。何も機能していません。
編集: 私の間違いです。問題は LOAD イベントにはありません。IIS から実行している場合、プログラムはサーバーに戻りません。問題は HyperLink NavigateUrl にあります。それを変更しようとしても役に立ちません。何か案が?