에 다시 게시 후 널 (null)이된다하여 페이지로드에서 실행 내 코드입니다 : 때때로ASP.NET 세션이 여기에 지역
protected void Page_Load(object sender, EventArgs e)
{
DisableChaching();
if (Request.Cookies["UserName"] == null)
{
if (Session["UserName"] == null)
{
Response.Redirect("~/Default.aspx");
}
else if (Session["AccessLevel"].ToString().Equals("2"))
{
Response.Redirect("~/Default.aspx");
}
}
else if (Session["AccessLevel"].ToString().Equals("2"))
{
Response.Redirect("~/Default.aspx");
}
if (!IsPostBack)
{
LoadControls();
BindGrid();
}
}
나는 데이터베이스에 일부 데이터를 저장하려고 내가 오류가 발생, 나는 시도 내 저장 버튼을 클릭하여 데이터를 다시 저장하고,이 오류 얻을 : 다음 줄에
Object reference not set to an instance of an object
을 경우 코드 :
else if (Session["AccessLevel"].ToString().Equals("2"))
왜이 오류가 발생합니까? 여기
는 CHR 사용자를 기억하는 체크 박스가 어디에 로그인 사용자 컨트롤에 내 코드입니다 :DisableChaching();
FillInfo();
if (Request.Cookies["UserName"] != null)
{
Session["UserName"] = Request.Cookies["UserName"].Value;
Session["AccessLevel"] = Request.Cookies["AccessLevel"].Value;
Session["FirstName"] = Request.Cookies["FirstName"].Value;
Session["LastName"] = Request.Cookies["LastName"].Value;
WellCome();
if (Session["AccessLevel"].ToString() == "1")
{
RenderMenu(AcccessLevel.SiteManager);
}
else if (Session["AccessLevel"].ToString() == "2")
{
RenderMenu(AcccessLevel.Client);
}
}
else if (Session["UserName"] != null)
{
WellCome();
if (Session["AccessLevel"].ToString() == "1")
{
RenderMenu(AcccessLevel.SiteManager);
}
else if (Session["AccessLevel"].ToString() == "2")
{
RenderMenu(AcccessLevel.Client);
}
}
else
{
WellGo();
RenderMenu(AcccessLevel.LogedOutUser);
}
enter code here
:
if (ChR.Checked == true)
{
Response.Cookies["UserName"].Value = txtUserName.Text.Trim();
Response.Cookies["UserName"].Expires = DateTime.Now.AddMonths(2);
Response.Cookies["AccessLevel"].Value = member.AccessLevel.ToString();
Response.Cookies["AccessLevel"].Expires = DateTime.Now.AddMonths(2);
Response.Cookies["FirstName"].Value = member.FirstName;
Response.Cookies["FirstName"].Expires = DateTime.Now.AddMonths(2);
Response.Cookies["LastName"].Value = member.LastName;
Response.Cookies["LastName"].Expires = DateTime.Now.AddMonths(2);
Session["UserName"] = txtUserName.Text.Trim();
Session["AccessLevel"] = member.AccessLevel.ToString();
Response.Redirect("~/Default.aspx");
}
else
{
Session["UserName"] = txtUserName.Text.Trim();
Session["AccessLevel"] = member.AccessLevel.ToString();
Session["FirstName"] = member.FirstName;
Session["LastName"] = member.LastName;
Response.Redirect("~/Default.aspx");
}
내가 세션에 Page_Load 이벤트에서 이런 식으로 값을 할당 내 마스터 페이지에서
이 게시물을 읽었습니까 http://arstechnica.com/civis/viewtopic.php?f=20&t=220827? –
조는 그런 문제가 없었습니까?! 무엇이 잘못 될 수 있는지 생각해 낼 수 있습니까? 여기서 내 코드에 문제가있는 것을 보시겠습니까? 또한 여기에 세션 값을 설정하는 코드가 있습니다 : – Karamafrooz
아마 app-domain이 재활용되기 때문에 세션이 손실 될 수 있습니다. http://blogs.msdn.com/b/tess/archive/2006/08/02/asp-net-case-study-lost-session-variables-and-appdomain-recycles.aspx –