3

アプリコードsession.csファイルで以下のコードを使用しました。すべてのページがブラウザーに表示されるたびに、最初に httpmodule.cs に読み込まれます。httpcontext.current.session値が であることがわかりましたnull

if (HttpContext.Current != null && HttpContext.Current.Session != null)
        {
            try
            {
                if (HttpContext.Current.Session.Keys.Count > 0)
                {

                }
                else
                {
                    HttpContext.Current.Response.Cookies["ecm"].Expires = DateTime.Now;
                    HttpContext.Current.Response.Cookies["ecmSecure"].Expires = DateTime.Now;


                }
            }
            catch (Exception ex)
            {

            }
        }

web.config セッション設定:

<sessionState mode="InProc" 
              stateConnectionString="tcpip=127.0.0.1:42424" 
              sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes" 
              cookieless="false" 
              timeout="5" />
4

2 に答える 2

0

1つの可能な方法は、プロパティでラップして、文字列のようにアクセスすることです:-

string SessionVariable
{
   get{
      return Session("SessionVariable") ?? String.Empty;
   }
   set{
      Session("SessionVariable") = value;
   }
}

次に、次のように使用します:-

if( String.IsNullOrEmpty( SessionVariable) )
{
   // do something
}
于 2013-09-17T18:00:18.397 に答える
0

回答をくれた友人に感謝します。私は答えを見つけました。セッション値は生成された http モジュールです。セッション値にアクセスした後、終了要求のみが呼び出されます。以下のコードを使用しました。

public void Init(HttpApplication context)
{
    context.BeginRequest += new EventHandler(context_BeginRequest);
    context.EndRequest += new EventHandler(context_EndRequest);
    context.AcquireRequestState += new EventHandler(SessionClear);
}

public void SessionClear(object sender, EventArgs e)
{
    try
    {
        if (HttpContext.Current != null && HttpContext.Current.Session != null)
        {
            if (!(HttpContext.Current.Session.Keys.Count > 0))
            {

            }

        }
    }
    catch (Exception ex)
    {
    }
}
于 2013-09-18T10:29:23.173 に答える