我的生产服务器上有一个奇怪的例外:
来源错误:
在执行当前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它完美运行,从今天开始工作......我怎么能解决这个问题呢?
答案 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