Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.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# 会话变量引发nullreference异常_C#_Asp.net_Asp.net Mvc 4_Iis_Session Variables - Fatal编程技术网

C# 会话变量引发nullreference异常

C# 会话变量引发nullreference异常,c#,asp.net,asp.net-mvc-4,iis,session-variables,C#,Asp.net,Asp.net Mvc 4,Iis,Session Variables,我有一个使用ASP MVC4的web应用程序 我将会话变量设置为 protected void Session_Start() { Session["__UserLanguage"] = "EN"; } 我在我的控制器上使用它 private void AddTranslation() { string language = Request.Form["Language"]; if (language != null) { Ses

我有一个使用ASP MVC4的web应用程序

我将会话变量设置为

protected void Session_Start()
    {
        Session["__UserLanguage"] = "EN";
    }
我在我的控制器上使用它

private void AddTranslation()
{
   string language = Request.Form["Language"];
   if (language != null)
   {
       Session["__UserLanguage"] = language;
   }
   else
   {
       language = Session["__UserLanguage"] as string;
   }
}
但当我在IIS上发布它时,它会返回

System.NullReferenceException: Object reference not set to an instance of an object.
当我试着把它放进控制器时

Session["__UserLanguage"] = language;
为什么?:'(

编辑:事实上,在调试会话之后,我的应用程序中没有使用\u Start()。这怎么可能呢

添加后编辑2:

<remove name="Session" />
<add name="Session" type="System.Web.SessionState.SessionStateModule" preCondition=""  />

这解决了我的问题!为什么不直接由visual studio添加:(

添加后

<remove name="Session" />
<add name="Session" type="System.Web.SessionState.SessionStateModule" preCondition=""  />


这解决了我的问题!

1)该生产应用程序上是否启用了会话?2)应用程序重新启动将刷新进程内会话。您的代码必须能够处理此问题。请参阅。1)在IIS中启用了Yeap会话状态,超时时间为30分钟。2) 正常情况下,“Session_Start()”将始终在Session[“\uu UserLanguage”]中放置“EN”!关于如何使用此网站:不要在问题中添加答案,请发布自我回答。@HugoB。将-已解决-添加到磁贴不被视为良好做法-。如果你已经找到了一个解决方案,那么你可以将它作为你自己问题的答案发布,并将其标记为已接受。