【问题标题】:Session variable + WebMethod variable value not updating会话变量 + WebMethod 变量值未更新
【发布时间】:2013-04-08 21:30:05
【问题描述】:

我有一个带有下拉列表的网络应用程序。选择新索引后,我必须将值存储到会话变量中,该变量是在 Session_Start 事件上创建的。

protected void Session_Start(object sender, EventArgs e)
{
    Session.Add("testValue", "test");
}

在 selectedindex 更改事件上,我正在设置这样的新值

Session["testValue"] = DropDownList.SelectedItem.Text;

我有一个 Web 服务,我可以在其中检索会话变量的值,如下所示:

[WebMethod(EnableSession = true)]
public string getValue()
{

    var testVal = Session["testValue"].ToString();

    return testVal.ToString();
}

我从控制台应用程序连接到 Web 服务并检索 getValue() 返回的值,但始终返回初始值。请问有什么办法吗?

【问题讨论】:

  • 检查你的下拉列表中各项的值是否不同
  • 你说from a console app - 你希望你的控制台应用程序和网络浏览器共享同一个会话吗?
  • 嗨,Richard,我的目的是让 webMethod 检索会话变量值,这在我访问 webservice.asmx 并调用相应返回值的方法时正在执行。从控制台应用程序访问 url 时不应该是相同的行为吗?
  • 记得在web.config中启用会话

标签: c# asp.net session session-variables


【解决方案1】:

问题是因为控制台应用程序运行时似乎创建了一个新会话。使用 Application.Set 和 Application.Get 使用应用程序状态解决了这个问题。希望当系统被多个用户使用时我不会遇到问题。

【讨论】:

    【解决方案2】:

    检查下拉列表中项目的值是否不同。这对于触发所选的索引更改事件至关重要。

    【讨论】:

      【解决方案3】:

      这里的值没有改变,你没有改变值。所以没有预期

      public string getValue()
      {
          var testVal = Session["testValue"].ToString();
          return testVal.ToString();
      }
      

      错误可能在下拉列表中

      protected void Page_Load(object sender, EventArgs e)
      {
      if (!Page.IsPostBack)
      {
        Session["testValue] = dropdownlist1.SelectedItem.text;
      }
      }
      

      还有,

      protected void dropdownlist1_SelectedIndexChanged(object sender, EventArgs e)
      {
      Session["testvalue"] = dropdownlist1.SelectedItem.text;
      }
      

      也可以试试

      System.Web.HttpContext.Current.Session["testvalue"] 
      

      两部分

      【讨论】:

      • 该方法不应更改会话变量的值,而是检索它。会话变量的值在 DropDown 的 SelectedIndexChanged 事件上发生更改
      • 会话变量值会相应更改,因为当我通过其 url 访问 web 服务并调用它返回客户端选择的值的方法时。从控制台应用程序访问 web 方法时的问题。
      • 尝试使用静态方法。 +1
      • 如果您的意思是 webmethod 是静态的,那么从控制台应用程序使用 web 服务时 webmethod 将不可用。
      猜你喜欢
      • 2011-02-08
      • 2018-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多