Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 会话{";对象引用未设置为对象的实例。";}System.Exception{System.NullReferenceException}_C#_Asp.net_Session_Visual Studio 2012 - Fatal编程技术网

C# 会话{";对象引用未设置为对象的实例。";}System.Exception{System.NullReferenceException}

C# 会话{";对象引用未设置为对象的实例。";}System.Exception{System.NullReferenceException},c#,asp.net,session,visual-studio-2012,C#,Asp.net,Session,Visual Studio 2012,我是ASP.NET新手,遇到了一个问题。我正试图管理已编写的网站。当我到达以下行时出现此错误: if (Session["usertype"].Equals("2")) { } 会话[“usertype”]已在上一页分配。在当前页面上,我释放了所有会话变量(我在调试中检查了它) 会话在登录后按以下方式分配 Session["usertype"] = "2" 登录后的页面,10秒后刷新。那是我放松训练的地方。 请告诉我,这里可能有什么问题。如果您收到NullReferenceExceptio

我是ASP.NET新手,遇到了一个问题。我正试图管理已编写的网站。当我到达以下行时出现此错误:

if (Session["usertype"].Equals("2"))
{

}
会话[“usertype”]
已在上一页分配。在当前页面上,我释放了所有会话变量(我在调试中检查了它)

会话在登录后按以下方式分配

Session["usertype"] = "2"
登录后的页面,10秒后刷新。那是我放松训练的地方。
请告诉我,这里可能有什么问题。

如果您收到
NullReferenceException
,则会话值返回为
null
。您可能应该检查:

var userType = (string)Session["usertype"];
if(userType == null) {
    // .. things to do if no session value
} else {
    // test "2" etc
}

可能是会话状态被禁用,或者根本没有设置值。

您使用的是WebForms还是MVC?在WebForms中,会话状态在页面初始化之后才可用。

只需检查会话变量是否为Null-

     if( Session["usertype"] != null )
    {
         //Now check your condition here
    }
   else {
           //Perform any operation
        }

您的进程是否超过10秒?
您可以更改IIS中会话的长度。打开IIS,单击您的网站,选择会话状态(ASP.NET选项卡),查看状态服务器,更改超时(默认值:10秒)

将值存储到会话中的代码?将完整的
会话粘贴到此处。.为什么要使用
.Equals
进行检查。您应该使用
=
进行检查,如果((string)会话[“usertype”]==2.ToString(){},也可以尝试此操作
必要时,尝试为变量赋值。。更重要的是,演示如何以及在何处分配
会话[“usertype”]
尝试以下操作:String s=Request.QueryString[“usertype”]@编码器如果希望值在会话中,为什么要检查查询字符串?如何在Visual Studio 2012中检查它?它是空的,这是错误显示的内容。我的问题是,它是如何丢失的?请尝试在session_Start块中的Global.asax中声明会话变量,否则此问题可能是由于在进程会话状态中使用导致的。我正在会话状态中使用“进程中”。我还应该做什么?您应该使用Out proc(状态服务器)来维护会话。如何操作?好处是什么?在我的IIS中,我使用“进程中”作为会话状态。这不对吗?VS 2012调试是否使用IIS设置?“进程中”会话状态的默认超时为20分钟。我想这就够了。但如果会话每10秒重置一次,则默认值可能会更改。打开IIS管理器,在“功能”视图中,双击ASP,在ASP页上的“服务”下,展开“会话属性”,在“超时”字段中,输入超时值。(IIS服务器7不是IIS Express)这是20分钟。它没有更改。请签入网络配置文件。。。。。。。。。或者您的会话被web场中运行的另一个模块重置,或者您没有在global.asax中定义会话变量。这段视频可能会有所帮助