2

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

4

3 回答 3

1

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

于 2013-04-08T13:30:05.360 回答
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"] 

在这两个部分

于 2013-04-08T12:28:52.473 回答
0

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

于 2013-04-08T12:32:50.330 回答