2017-02-14 1 views
2

私はSession_Start()とSession_End()を使ってセッション状態イベントを捕捉する必要があります。プロジェクトの性質上、ソースコードの変更が制限されているため、これらのメソッドをglobal.asaxファイルに追加することはできません。どうすればいい?私は既にglobal.asax.csクラスを継承してそこにメソッドを追加しましたが、ヒットしません。global.asax(C#、.Net)以外のセッション状態イベントをキャッチしていますか?

答えて

0

HTTP Moduleでこれを行うことができます。ここでは例です:

あなた web.configで今
public class SessionCatchingModule : IHttpModule //You will need to import System.Web 
{ 
    public void Init(HttpApplication context) 
    { 
     //Get the SessionstateModule and attach our own events to it 
     var module = context.Modules["Session"] as SessionStateModule; 
     if (module != null) 
     { 
      module.Start += this.Session_Start; 
      module.End += this.Session_end; 
     } 
    } 

    private void Session_Start(object sender, EventArgs args) 
    { 
     //Oh look, a session has started 
    } 

    private void Session_End(object sender, EventArgs args) 
    { 
     //Oh look, a session has ended 
    } 

} 

モジュールがロードされていることを確認してください:

<system.webServer> 
    <modules> 
    <add name="SessionCatchingModule" 
     type="YourNamespace.Goes.Here., SessionCatchingModule" /> 
    </modules> 
</system.webServer> 
関連する問題