2014-07-07 2 views
-1

저는 ASP.NET의 새로운 사용자로서 모든 페이지를 변수, 이벤트 및 메서드로 분리하려고했습니다. 거의 모든 메서드와 이벤트에서 사용되는 세션 변수를 사용합니다. 따라서 모든 메소드에서 추출하여 변수에 저장하는 대신 페이지 수준에서 추출하려고했습니다. 그러나 'Session'키워드는 변수 외부에서 인식되지 않습니다. 왜 그런가요?세션 변수를 메소드 외부에서 액세스 할 수없는 이유는 무엇입니까?

public partial class OnCall_OnCall_History : System.Web.UI.Page 
{ 
#region Variables 
string ID = Convert.ToString(Session["ID"]); //Not allowed 
#endregion 

#region PageLoad 
protected void Page_Load(object sender, EventArgs e) 
{ 

    if (!IsPostBack) 
    { 
     string ID = (string)(Session["ID"]); //Allowed 
    } 
} 
#endregion 

} 당신이 선언에서 변수를 초기화하기 때문이다

+0

코드를 공유하십시오. –

답변

1

는, 그 할당은 생성자에서 실행됩니다. 이는 Page 객체의 속성이 설정되기 전에 페이지가 요청 및 세션이 있음을 인식하도록하기 전에 발생합니다.

Init 이벤트 처리기 내에서 해당 할당을 이동하십시오. 이 이벤트는 다른 이벤트보다 먼저 발생하지만 Page 개체가 올바르게 설정되면 발생합니다. 같을 것이다

:

protected string ID; 

protected void Page_Init(object sender, EventArgs e) { 
    ID = Convert.ToString(Session["ID"]); 
} 
0

나는 이유를 알고하지 않습니다하지만 당신은 그래서 당신의 코드가

여기
public partial class OnCall_OnCall_History : System.Web.UI.Page 
{ 

    string ID = Convert.ToString(HttpContext.Current.Session["ID"]); 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!IsPostBack) 
     { 
       string ID = (string)(Session["ID"]); //Allowed 
     } 
    } 
} 

이 될 수있는이

string ID = Convert.ToString(HttpContext.Current.Session["ID"]); 

처럼 사용할 수 있습니다 양쪽의 차이
Difference between Session and HttpContext.Current.Session
What is the difference between these two HttpContext.Current.Session and Session - asp.net 4.0

+0

방금 ​​시도한 내용 : "개체 참조가 개체의 인스턴스로 설정되지 않았습니다" – Bharg

0

세션 개체는 ASP.NET 페이지의 컨텍스트에서 사용할 수 있습니다. asp.net 페이지 컨텍스트와 세션을 사용할 수 있도록 요청해야합니다.

Httpplication ->으로 HttpContext -> HttpSession에

도움이 되었기를 바랍니다.

관련 문제