一部のページでセッションを確認したい。これを行うには、web.config 内で確認するページ名をappsetting
キーとして追加します。セッションが空であることが判明した後、イベントを発生させて httpHandler を使用したいと考えています。
httpHandler を dll (別のプロジェクト) として作成し、Web サイトに追加した場合、ハンドラーがイベントを起動し、Web サイトが Web ページ内でイベントをキャプチャできますか?
一部のページでセッションを確認したい。これを行うには、web.config 内で確認するページ名をappsetting
キーとして追加します。セッションが空であることが判明した後、イベントを発生させて httpHandler を使用したいと考えています。
httpHandler を dll (別のプロジェクト) として作成し、Web サイトに追加した場合、ハンドラーがイベントを起動し、Web サイトが Web ページ内でイベントをキャプチャできますか?
あなたができることはこれです:
HttpHandler は、HttpContext.Current.Items
セッションがあったかどうかを示す値をコレクションに入れます。何かのようなもの
HttpContext.Current.Items.Add("SessionWasThere") = true;
Page_Load
イベントでその値をチェックし、それを伝える新しいイベントを発生させるBasePage を作成します。
public abstract class BasePage : Page {
public event EventHandler NoSession;
protected override void OnLoad(EventArgs e){
var sessionWasThere = (bool)HttpContext.Current.Items.Add("SessionWasThere");
if(!sessionWasThere && NoSession != null)
NoSession(this, EventArgs.Empty);
}
}
ページで、そのイベントを購読します。
public class MyPage : BasePage{
protected override void OnInit(){
NoSession += Page_NoSession;
}
private void Page_NoSession(object sender, EventArgs e) {
//...
}
}