2

マスターページが2回呼び出されています。ページ全体がレンダリングされた後。この時点で、isPostback値はfalseであり、SESSIONはnullです。

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        //SOME CODE

        try
        {
            strUserId = Session[USERID].ToString();
        }
        catch
        {
            Response.Redirect("error.aspx");
        }
    }
}

マスターページの最初のページの読み込み(ページのレンダリング前)では、すべて問題ありません。再度レンダリングした後、マスターページのpage_loadが呼び出されます。今回SESSIONにアクセスすると、例外が発生します。

HttpException(セッション状態は、構成ファイルまたはPageディレクティブのいずれかでenableSessionStateがtrueに設定されている場合にのみ使用できます。また、System.Web.SessionStateModuleまたはカスタムセッション状態モジュールが<configuration>\<system.web>\<httpModules>アプリケーションのセクションに含まれていることを確認してください。構成。)。

page_loadが2回または3回呼び出されても、問題はありません。2ページ目の読み込み時にSESSIONにアクセスしたくありません。

編集2

2番目のマスターページの読み込みは、私が以前に監視したこのコード(現在のGlobal.asaxファイル)が原因で発生しています。

 void Application_Error(object sender, EventArgs e) 
    {         
       Server.Transfer("~/ErrorMessage.aspx");
    }

ErrorMessage.aspxページは、マスターページの子ページです:(

しかし、それでも答えられる質問は、ページのレンダリングが成功した場合でもApplication_Error()が生成されるのはなぜですか?Application_Error()でブレークポイントを維持しようとしましたが、イベント引数は毎回空です。

4

3 に答える 3

2

次のコードをファイルに追加してみてくださいWeb.config。現在どのようになっているかわからないため、移植する必要があるかもしれません。この投稿を参照して、会話全体と条件を確認できます。

<system.webServer>
    <modules>
         <!-- UrlRewriter code here -->
         <remove name="Session" />
         <add name="Session" type="System.Web.SessionState.SessionStateModule" preCondition="" />
    </modules>
</system.webServer>

編集 1

ASPXこの問題は、マスター ページのページでイベント ハンドラーを接続しようとしているという事実に関連している可能性が非常に高いです。Sessionこれは、変数へのアクセスやさらには変数などに関連する問題を常に引き起こしてきましApplicationた。したがって、次のことを試してください。

  1. マークアップされたイベント ハンドラーをASPXファイルから削除します。
  2. マスター ページのコンストラクターに、次のコードを配置します。

コンストラクター コード

public MasterPage()
{
    this.Load += new EventHandler(Page_Load);
}

そして、同じハンドラーで実行していたコードを実行します。

編集 2

Web.config次のセクションが正しく設定されているかどうかを確認してください。

<system.web>
    <pages enableSessionState="true" />
    ...
</system.web
于 2012-08-14T12:26:22.390 に答える
1

firebug でリクエストを確認した後、問題の原因を突き止めたと思います。存在しない 2 つの .gif ファイルに対して、いくつかの ajax 要求がありました。そのため、Global.asax の Application_Error() が呼び出されました。そこで発生した例外は「ファイルが見つかりません」でした。次に、Application_Error() に Server.Transfer("~/ErrorMessage.aspx") がありました。残念ながら、ErrorMessage.aspx はマスター ページの子ページでした。そのため、すべてのページで AJAX 要求が行われ、「ファイルが見つかりません」という例外が発生し、ErrorMessage.aspx に転送され、マスター ページの page_load が 2 回呼び出されたように見えました。

于 2012-08-16T04:07:34.580 に答える
0

エラーの説明では、を使用するための設定を確認するように指示されていますSession。その設定を確認しましたか(enableSessionState)?

また、error.aspxマスターページがうまく機能することがわかるまで、マスターページを使用しないことを確認してください。そうしないと、奇妙なエラーが発生する可能性があります...

于 2012-08-14T12:20:55.423 に答える