1

最近、すべてのセッションチェックをglobal.asaxに統合しました。これは正常に機能しますが、ページがfilehandler.ashxを呼び出して画像を取得するときにそこに配置したため、セッションのnull参照エラーが発生し続けます(ただし、それを呼び出します)。

try / catchを回すと画像が読み込まれますが、これは明らかに良い解決策ではありません。

 void Application_PostAcquireRequestState(object sender, EventArgs e)
    {
        try
        {
            HttpContext context = HttpContext.Current;
            if (context.Session["tid"] == null)  //Null Reference here
            {

理想的には、ファイルハンドラーにねじ込まれないポストバックまたは最初のロードで発生するイベントを探しています。以前のようにmaster_pageinitにいつでも入れることができない場合は(これは悪い習慣ですか?)、それはうまく機能しているように見えたので、私は推測します。global.asaxがより優れたソリューションになると思いました。

次に何を試すべきかについて何か考えはありますか?

私がこれまでに試したイベント。

Application_AcquireRequestState

Application_PostAcquireRequestState

Application_PreRequestHandlerExecute

Application_PreSendRequestContent
4

1 に答える 1

4

ASHXでは、セッション状態を明示的に継承する必要があります。

public class SomeCustomService : IHttpHandler, IRequiresSessionState
{
    // stuff
}
于 2013-03-21T15:39:26.033 に答える