我有一个c#.net网络应用程序。我创建会话变量,但是当我离开页面后我尝试读取它们时,我不能。
第1页创建
Session["UserName"] = "WhatEver";
然后我做
Response.Redirect("~/whatever.aspx");
并尝试阅读以读取新页面的Page_Load方法中的会话变量
string userName = Session["UserName"].ToString();
我收到Object reference not set to an instance of an object.
为什么我收到此错误,我该怎么做才能解决问题?
答案 0 :(得分:5)
这可能有所帮助:
Response.Redirect("~/whatever.aspx",false);
来自this article:
这不会中止线程,从而节省会话令牌。实际上,此重载由RedirectFromLoginPage内部使用。
答案 1 :(得分:0)
sessionState
文件中可能会config
被关闭
<sessionState mode="Off/>
更改为InProc
[取决于]
<sessionState mode="InProc" timeout ="60" />
答案 2 :(得分:0)
我有完全相同的问题,我设法克服了这个问题,但坦率地说我不理解100%的解决方案,反正我做的是从我的项目创建一个“Global.asax”文件“添加新项”菜单。只需将以下代码复制粘贴到全局文件中即可。该文件中的代码如下:
using System;
using System.Collections.Generic;
using System.Web;
using System.Web.Security;
using System.Text;
using System.Data;
using System.Data.SqlClient;
namespace ENTER_YOUR_NAMESPACE
{
public class Global : System.Web.HttpApplication
{
void Application_Start(object sender, EventArgs e)
{
}
void Application_End(object sender, EventArgs e)
{
/* Code that runs on application shutdown */
Session_End(sender, e);
}
void Application_Error(object sender, EventArgs e)
{
}
void Session_Start(object sender, EventArgs e)
{
}//end void Session_Start
void Session_End(object sender, EventArgs e)
{
}//end void Session_End
}//end class Global
}//end namespace