ASP.NET 4.0 Web Forms 응용 프로그램에 일시적인 문제가 있습니다.Page_reart에서 Session_Start에 설정된 세션 값을 사용할 수 없습니다.
은으로 session_start, 나는 세션에서 마스터 페이지 파일 경로를 저장 :
이protected void Session_Start(Object sender, EventArgs e)
{
// Not shown: get master page path from database
Session["MasterPagePath"] = PathIGotFromTheDatabase;
}
그런 다음 내 페이지 'Page_PreInit에, 나는 Page.MasterPageFile
protected void Page_PreInit(object sender, EventArgs e)
{
Page.MasterPageFile = Session["MasterPagePath"] + @"/MyMasterPage.Master";
}
을 설정 세션 값을 사용 이것은 99 %의 시간 동안 작동하지만 때로는 무언가가 깨지고 Session [ "MasterPagePath"]가 null입니다. 사용자는 사이트를 다시 사용하기 위해 활성 브라우저 세션을 모두 닫아야한다고보고합니다.
내 이해는 Session_Start의 [ "MasterPagePath"] 세션을 채우기 때문에 항상 내 페이지의 PreInit 메소드에서 사용할 수 있어야한다는 것입니다. 내 세션이 만료 된 경우 Page_reInit가 호출되기 전에 항상 Session_Start에 의해 다시 채워집니다.
여기에 뭔가가 있습니까? 어떤 조건에서 설명 할 수 있습니까? InProc 세션 상태를 사용하고 있습니다.
ASP.NET은'Pre_Init' 이전의'Page request'-stage에서 새로운 Session을 생성해야하는지 여부를 결정한다고 가정합니다. http://msdn.microsoft.com/en-us/library/ms178472.aspx 따라서 나는 이것이 "페이지 라이프 사이클"이라고 생각하지 않습니다. –
어떤 프레임 워크를 사용하고 있습니까? 다음 의견을 읽으셨습니까? http://msdn.microsoft.com/en-us/library/ms178581.aspx#10? –
@Tim 두 개의 요청에 동일한 세션 ID가있는 경우 Session_Start가 두 번 호출된다는 흥미로운 설명이 있습니다. 이 줄에 따라 동시성 또는 경쟁 조건 문제가 될 수 있다고 생각했지만 ASP.NET은 필요한 경우 세션을 잠글 것으로 가정합니다. –