2012-08-13 2 views
1

나는 일부 페이지에서 세션을 확인합니다. 이를 위해 나는이 appsetting 키로 Web.config의 내부에서 확인 할 페이지의 이름을 추가하고있다. 나는 세션이 비어 있거나 뭔가 다른 발견 한 후 이벤트를 쏜 HttpHandler를 사용할.는 httphandler가 이벤트를 실행할 수 있습니까?

내가 HttpHandler를이 DLL로 (다른 프로젝트)를 만들고 웹 사이트에 추가하는 경우, 이벤트를 발생 핸들러 웹 사이트가 웹 페이지 내부를 캡처 할 수 있습니다?

귀하의 HttpHandler를이 세션 여부가 있다면 알려주는 HttpContext.Current.Items 수집에 값을 넣습니다 :

답변

0

은 당신이 할 수있는 일은 이것이다. 당신은 Page_Load 경우에 그 값을 확인하고 그렇게 말하는 새로운 이벤트를 발생베이스 페이지 생성

HttpContext.Current.Items.Add("SessionWasThere") = true; 

식으로 뭔가 : 페이지에서

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); 
    } 
} 

는 해당 이벤트에 suscribe :

public class MyPage : BasePage{ 

    protected override void OnInit(){ 
     NoSession += Page_NoSession; 
    } 

    private void Page_NoSession(object sender, EventArgs e) { 
     //... 
    } 
} 
+0

웹 페이지는 페이지 핸들러에 의해 처리된다. 그는 예를 들어'Application_PostAcquireRequestState'에서'HttpModule'으로 뭔가를 할 수 있습니다. 그렇지 않으면 사용자 정의 이벤트 클래스와 함께 사용자 정의 페이지 클래스를 사용하라는 제안이 doable로 들립니다. – user1429080

관련 문제