会话变量+ WebMethod变量值不更新

时间:2013-04-08 12:23:42

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

我有一个带有下拉列表的网络应用。选择新索引时,我必须将值存储到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()返回的值,但始终返回初始值。有什么想法吗?

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

此处值未更改,您未更改值。没什么可期待的

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"] 

两部分

答案 2 :(得分:0)

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