【问题标题】:null session on page method页面方法上的空会话
【发布时间】:2011-11-30 11:38:39
【问题描述】:

我正在使用 InProc 会话状态,但出于某种奇怪的原因,当我使用页面方法时,会话变量总是 null

如果我这样做:

var test = HttpContext.Current.Session["test"];

当我在页面方法上运行时,它什么也没显示,但如果我继续调试并打开另一个页面,它会显示预期的结果。我无法发布应用程序的所有代码,我应该从哪里开始寻找?

web.config 文件如下所示:

  <sessionState mode="InProc"/>

谢谢。

【问题讨论】:

  • 首先解释一下你在什么上下文中使用上面的代码。这是在某个页面的代码隐藏中吗(我猜是的)-在此之前您是否为“测试”设置了一些值?
  • 您是否在使用之前设置了该变量?您是否在农场上运行该 Web 应用程序? InProc 会话状态不适用于这种情况。
  • 上面的代码位于页面方法和后面的 2 个不同的 aspx 页面代码中。变量设置为值“testworks?”在母版页中。当我调试 aspx pages 测试保存变量但当我调试 page 方法时,变量为 null。

标签: c# asp.net session


【解决方案1】:

如果您在masterpage 中设置“test”,那么webmethod 中的它将为空。 webmethodmasterpages 一无所知。

 [System.Web.Services.WebMethod(EnableSession=true)]
 public static string Bla(double bla)
 {
     //code here
     var test = HttpContext.Current.Session["test"];

 }

【讨论】:

  • 我添加了 enablesession 参数,但它仍然无法正常工作。我很困惑;它曾经工作过。附带说明一下,页面方法被声明为静态的。
  • 我在母版页中设置了session,然后我用page方法的时候应该是可以检索的;那就是问题所在。该会话适用于 aspx 页面,但不适用于页面方法
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-14
  • 1970-01-01
  • 2011-08-17
  • 1970-01-01
  • 2013-10-02
相关资源
最近更新 更多