2012-07-18 4 views
0

내 페이지에서 다음 버튼을 클릭 할 때마다 세션 ID를 다시 생성합니다. 로그인 할 때 이미 세션 변수 (세션 [ "uname"] = txtusername.text)에 사용자 이름을 저장했습니다.하지만 새 세션 ID를 다시 생성 할 때 세션 [ "uname"]에 null 참조가 있습니다. 세션 번호가 인 Global.asax세션 시작 함수에 설정하여 세션 변수 값을 설정해야하는 이유입니다.글로벌 asax에서 코드 숨김 값에 액세스하는 방법

void Session_Start(object sender, EventArgs e) 
    { 
     session["uname"]=here; 
    } 

은 그러나 여기에서 Global.asax 페이지에 나는 페이지 내 로그의 값없는 액세스입니다.. 주요 문제는 코드 뒤에서 global.asax의 값에 액세스하는 것입니다. 어떻게이 ...... Plz은 도움이 ...... 미리 하라구요 ..............

+0

Global.asax에서 컨트롤에 액세스하는 대신 페이지 수준 정보를 다른 방법으로 저장해야합니다. 또한 매번 세션 ID를 재생성해야하는 이유는 무엇입니까? – rikitikitik

답변

0
HttpContext.Current.Session["uname"]=here; 
+0

** thnks v much ... bt 주요한 문제는 코드 뒤에서 global.asax 페이지로 변수/제어 값을 액세스하는 것입니다. 로그인 페이지 또는 global.asax의 변수에서 textbox 값에 액세스 할 수 없습니다. ... ** –

0

먼저 돈`t 쓰기를 해결할 수 Global.asax의 비즈니스 로직.

  1. 으로 session_start()라는
  2. 세션이 유지되는 방법 당신이 당신의 세션 변수를 설정해야합니다
  3. : 나는 3 기본적인 것들을 당신을 지적하고 싶다. 당신은 HTTP가 상태 프로토콜 알고 그래서 모든 요청은 새로운 요청이고,

    : 당신을 가정하고 다음과 같은 자세한 내용은

은 login.aspx, login.aspx.cs 있습니다. 그래서 모든 요청에 ​​대해 session_start()가 실행됩니다.

사용자가 처음으로 리소스를 요청하면 고유 세션이 생성되고 세션 ID가 포함 된 쿠키가 클라이언트로 전송됩니다.

사용자가 요청할 경우 HTTP 클라이언트는 쿠키를 서버로 전달하므로 사용자가 서버에서 추적 할 수 있습니다. 이것이 세션의 작동 방식입니다.


이제 Gloabl.asax의 session_start()에서 Session [ "uname"]을 설정하고 코드를 방문하게하고 페이지 라이프 사이클이 으로 시작되기 전에 Globlax.asax가 호출되므로 액세스 할 수 없습니다 페이지 데이터로.

Instade login.aspx.cs 파일에 세션 [ "uname"]을 설정해야합니다. 여기에서 사용자 자격 증명이 올바른지 확인한 후
세션 [ "uname"] = value를 설정하십시오.

이제 다른 모든 요청에 ​​대해 해당 사용자의 세션 [ "uname"]을 사용할 수 있습니다. 또한 Global.asax의 session_start()에서도 값을 검색/업데이트 할 수 있습니다.

+0

여러 수준에서 상수 세션 키 "uname"을 사용해야하는 이유는 무엇입니까? 예를 들어, 클래스 뒤에 global.asax 코드에 캐스팅 한'HttpContext.Current.ApplicationInstance'를 통해 현재 세션 로케일을 설정하거나 검색 할 수 있으므로 코드에서''uname "'과 같은 키를 사용할 필요가 없습니다 . – djmj

관련 문제