セッションのタイムアウトをチェックし、ユーザーを (ログイン ページではなく) タイムアウト ページにリダイレクトするバックグラウンド サービスを asp.net で作成しようとしています。私のコードはこのようなものです
public class SessionTimeoutModule : IHttpModule
{
private static Timer timer;
//Test value
private const int interval = 1000 * 1 * 10;
public void Init( HttpApplication application )
{
if ( timer == null )
{
timer = new Timer( new TimerCallback( CheckSessionTimeout ),
application.Context, 0, interval );
}
}
private void CheckSessionTimeout( object sender )
{
HttpContext ctx = (HttpContext)sender;
if ( ctx.Session != null && ctx.Session.IsNewSession )
{
var cookie = ctx.Request.Headers["Cookie"];
if ( cookie != null )
{
if ( cookie.ToUpper().IndexOf( "ASP.NET_SESSIONID" ) >= 0 )
{
ctx.Response.Redirect( "" );
}
}
}
}
public void Dispose()
{
timer = null;
}
}
ここでの問題は、CheckSessionTimeout メソッドでセッション値を取得できないことです。常にヌルです。ここでセッションを取得する方法。
私はこの解決策を見てきましたが、役に立ちません。