会话变量+ 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()返回的值,但始终返回初始值。有什么想法吗?

+0

检查下拉列表中的项目值是否不同 – Srinivas 2013-04-08 12:28:37

+0

您说'从控制台应用程序' - 您是否期望您的控制台应用程序和Web浏览器共享相同的会话? – 2013-04-08 12:42:19

+0

嗨理查德,我的意图是让webMethod检索会话变量值,目前正在做我访问webservice.asmx时,并调用相应的返回值的方法。当从控制台应用程序访问url时,它是否应该是相同的行为? – krafo 2013-04-08 12:56:20

这里的值不会更改,您没有更改这些值。所以没有什么预期

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

两部分中尝试

+0

该方法不应更改会话变量的值,而是检索它。会话变量的值在DropDown的SelectedIndexChanged事件中发生变化 – krafo 2013-04-08 12:31:01

+0

会话变量值会相应地改变,因为当我通过它的url访问webservice并调用方法时,它会返回客户端选择的值。从控制台应用程序访问webmethod时的问题。 – krafo 2013-04-08 12:48:01

+0

尝试使用静态方法。 +1 – 2013-04-08 12:55:23

检查下拉列表中的项目值是否不同。这对于选定的已更改索引更改事件是必不可少的。

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