【问题标题】:session null on production server生产服务器上的会话为空
【发布时间】:2011-11-03 14:39:14
【问题描述】:

我在生产服务器上遇到了一个奇怪的异常:

来源错误:

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

堆栈跟踪:

[NullReferenceException:对象引用未设置为对象的实例。] ..\Page\Specificaties\Functie\Functie.cs:35 中的 selectie.Functie..ctor() System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp,对象 o,对象 t,EventArgs e)+14 System.Web.Util.CalliEventHandlerDelegateProxy.Callback(对象发送者,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"];


该会话用于多种网络方法,例如:

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

}

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

}

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

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

localy 它运行完美,并且从今天开始一直有效...我该如何解决这个问题?

【问题讨论】:

  • 应用是如何部署到生产服务器的?是预编译的吗?
  • 应用程序构建为部署包,并通过导入应用程序 IIS 管理器安装。
  • @Oskar Kjellin 应用程序在本地运行良好
  • @Sebastiaan 如果我错了,请纠正我。我猜这个代码是从 Global.asax 的事件处理程序中直接或间接调用的。请查看此链接以供进一步参考 - siderite.blogspot.com/2009/01/…

标签: c# asp.net session


【解决方案1】:

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

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

【讨论】:

  • 编辑有帮助吗?你的 sessionstate 节点应该像上面那样,确保 sessionstate 上的 mode 属性没有设置为 Off
  • 只需将&lt;sessionState timeout="20" /&gt; 添加到web.config 并确保我在web 方法[WebMethod(EnableSession = true)] 中启用了会话。
【解决方案2】:

我对这种会话空场景的看法是——在您的应用程序中发生了隐藏的错误,但没有发现。代码中的任何异常都会终止会话并可能继续新会话,因此值为 null...

最好的方法,在带有调试 --> 异常菜单的 vs ide 中运行您的开发环境代码,在所有异常处理程序上运行应用程序的多个场景,最终您会意识到从简单的错误(如 convertToInt 或类似的参考错误,导致会话变为空......但正如我猜想的那样,事情并没有在“错误”页面中出现错误,而是通过上面的“调试”发现所有异常都打开选项。

希望对您有所帮助! 海德科技

【讨论】:

    猜你喜欢
    • 2011-04-18
    • 2019-01-18
    • 2013-01-05
    • 2016-03-28
    • 2017-12-26
    • 1970-01-01
    • 1970-01-01
    • 2014-05-16
    • 2012-02-19
    相关资源
    最近更新 更多