2014-07-14 3 views
1

페이지로 리디렉션 할 때 문제가 있습니다. 제 코드를 살펴보고 해결 방법을 알려주십시오. 매니페스트는 세션에서 변수를 저장하고 새 페이지로 리디렉션 한 후 세션 변수가 손실되고 새 sessionId가 만들어지는 것입니다. 나는 초보자입니다. 제발 조언.세션 변수를 설정 한 후 리디렉션하지 마십시오.

Login.aspx :

Util.IsAdminUser= false; // save in session Util.IsAdminUser 
Util.IsSpecialUser = true; //save in session Util.IsSpecialUser 
Response.Redirect(Pages.SelectAccounts, false); 
return; 

SelectAccounts.aspx :

Page_Load(object sender, EventArgs e) 
    { 
    if (!Util.IsAdminUser) // error of null, session is lost 
    { 
     ... 
     ... 
    } 
    } 
protected void Session_Start(object sender, EventArgs e) 
     { 
      LoggerNet.Info("SessionId:" + Session.SessionID); 
     } 

+0

세션을 어떻게 저장합니까? 'Util' 클래스와'CheckSessionExpired();'메소드를 보여줄 수 있습니까? – VMAtm

+0

Util에서 Session [ "IsAdmin"] = false, 세션 [ "IsSpecialUser"] = true로 설정하십시오. 어쨌든 .. 나는 세션에서 데이터를 저장하고 리디렉션하는 데 문제가 있다는 것을 짐작하고 있습니다.이 동작의 원인과 모범 사례는 무엇입니까? – user2483797

+0

세션을 어떻게 저장합니까? InProc, SQL 등 – VMAtm

답변

0

MSDN article 따르면 사전에 감사합니다 경우 모바일 페이지에 대한

당신의 응용 프로그램은 C에 의존합니다. 세션을 필요로하는 모바일 장치의 요청을받을 수 있습니다. 경로에 물결표 (~)을 사용하면 새 세션을 만들 수 있으며 은 잠재적으로 세션 데이터을 잃을 수 있습니다.

~/path는 같은 경로로 이동 제어
에 속성을 설정하기 위해, 속성에 할당하기 전에
~/path ResolveUrl를 사용하여 경로를 해결.

따라서 Pages.SelectAccounts 상수에 ~이 있으면 매회 새로운 세션이있을 수 있습니다. 리디렉션 전에 ResolveUrl 메서드를 추가하십시오.
Server.Transfer 메서드로 전환해야 할 수도 있는데 이는 비슷한 동작을 수행하지만 클라이언트에 대한 왕복은 수행하지 않습니다. 자세한 내용은 MSDN을 참조하십시오 :

How to: Redirect Users to Another Page
Correct use of System.Web.HttpResponse.Redirect


업데이트이 답변을 확인해야합니다 또한

:

ASP.NET: Session.SessionID changes between requests

Global.asax 파일에서 Session 개체를 사용하여 Session_Start 이벤트를 처리하십시오. 그러면 현재 사용자에 대해 SessionId이 잠겨 다시 변경되지 않습니다.


2 업데이트 # :이 같은 Session 객체에 일부 변수를 설정

당신에게 해야 :

protected void Session_Start(object sender, EventArgs e) 
{ 
    LoggerNet.Info("SessionId:" + Session.SessionID); 
    Session["LastVisitDate"] = DateTime.Now; 
} 

Session 개체에 대한 세터후가되고 있습니다 사용자에게 영구적 인 SessionId이 있다고합니다.

+0

이미 Session_Start 이벤트가 있으며 쿠키없는 세션 또는 모바일 페이지를 사용하지 않습니다 – user2483797

+0

@ user2483797'Session_Start' 코드를 제공 할 수 있습니까? 세션 객체에 setter를 사용합니까? – VMAtm

+0

업데이트 됨, 제발보십시오 – user2483797

관련 문제