会话变量+ WebMethod变量值不更新
问题描述:
我有一个下拉列表的Web应用程序。当选择新索引时,我必须将该值存储到在Session_Start事件上创建的会话变量。会话变量+ WebMethod变量值不更新
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()
返回的值,但始终返回初始值。有什么想法吗?
答
这里的值不会更改,您没有更改这些值。所以没有什么预期
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"]
两部分中尝试
答
检查下拉列表中的项目值是否不同。这对于选定的已更改索引更改事件是必不可少的。
答
问题是因为当控制台应用程序运行时,似乎创建了一个新的会话。使用应用程序状态使用Application.Set和Application.Get解决了这个问题。希望当系统被多个用户使用时,我不会有问题。
检查下拉列表中的项目值是否不同 – Srinivas 2013-04-08 12:28:37
您说'从控制台应用程序' - 您是否期望您的控制台应用程序和Web浏览器共享相同的会话? – 2013-04-08 12:42:19
嗨理查德,我的意图是让webMethod检索会话变量值,目前正在做我访问webservice.asmx时,并调用相应的返回值的方法。当从控制台应用程序访问url时,它是否应该是相同的行为? – krafo 2013-04-08 12:56:20