生产服务器上的会话null

时间:2011-08-25 11:27:10

标签: c# asp.net session

我的生产服务器上有一个奇怪的例外:

来源错误:

  

在执行当前Web请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常的起源和位置的信息。

堆栈追踪:

  

[NullReferenceException:对象引用未设置为对象的实例。]   selectie.Functie..ctor()in .. \ Page \ Specificaties \ Functie \ Functie.cs:35   System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp,Object o,Object t,EventArgs e)+14      System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender,EventArgs e)+35      System.Web.UI.Control.OnLoad(EventArgs e)+91      System.Web.UI.Control.LoadRecursive()+ 74      System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint,Boolean includeStagesAfterAsyncPoint)+2207

第35行:

  

Kast kast =(Kast)HttpContext.Current.Session [“kast”];


该会话用于多种web方法,如:

[WebMethod(EnableSession = true)]
public static String button_click(String information) {

}

[WebMethod(EnableSession=true)]
public static void ChangeKast(String id, String value)
{

}

在寻找解决方案时我发现了这个:

  

正如您所料,如果您为一个Web方法启用了会话支持,那并不意味着它为另一个Web方法启用了。实际上,如果对于特定Web方法未将EnableSession显式设置为True,则Context.Session属性将为null。

localy它完美运行,从今天开始工作......我怎么能解决这个问题呢?

2 个答案:

答案 0 :(得分:4)

<system.web>元素下的实时计算机上查看Web.Config应该有一个名为<sessionstate>的元素,确保它未设置为Mode="Off"

<configuration>
...
<system.web>
....
<sessionState mode="InProc" cookieless="false" timeout="20" />
....
</system.web>
....
</configuration>

答案 1 :(得分:0)

我对这种会话空方案的智慧表明 - 您的应用程序中发生了隐藏错误,但未发现。代码中的任何异常都会终止会话,并且可能会继续使用新会话,因此值为null ...

最佳方法,使用debug运行vs ide环境代码 - &gt;例外菜单,在所有异常处理程序上运行并运行应用程序的几个场景,最终你会发现隐藏的错误从简单的错误开始,比如convertToInt或类似的引用错误,这会导致会话变为空...但是我认为事情没有在“错误”页面中出错,但通过上面的“DEBUG”找到了所有异常ON选项。

希望它有所帮助! HydTechie