2013-04-08 3 views
2

У меня есть веб-приложение с выпадающим списком. Когда выбран новый индекс, я должен сохранить значение переменной сеанса, которая создается в событии Session_Start.Переменная сеанса + значение переменной WebMethod не обновляется

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

На SelectedIndex событие изменения я устанавливаю новое значение, как этот

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

У меня есть веб-сервис, где я получить значение переменной сеанса, как это:

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

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

    return testVal.ToString(); 
} 

Из консольного приложения я подключаюсь к веб-службе и извлекаю значение, возвращаемое getValue(), однако исходное значение всегда возвращается. любая идея, пожалуйста?

+0

Проверьте, не отличаются ли значения элементов в раскрывающемся списке – Srinivas

+0

Вы говорите «из консольного приложения» - вы ожидаете, что ваше консольное приложение и веб-браузер будут использовать один и тот же сеанс? –

+0

Привет, Ричард, я хочу, чтобы webMethod извлекал значение переменной сеанса, которое в настоящее время делает, когда я обращаюсь к webservice.asmx и вызывается методу, значение которого возвращается соответствующим образом. Не должно ли быть такого же поведения, когда URL-адрес доступен из консольного приложения? – krafo

ответ

0

Здесь значения не изменены, вы не изменили значения. Так ничего и не ожидал

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

Ошибку, вероятно, в DropDownList

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

этот метод не должен изменять значение переменной сеанса, но извлекать его. значение переменной сеанса изменяется при событии SelectedIndexChanged в DropDown – krafo

+0

значение переменной сеанса изменяется соответствующим образом, поскольку, когда я обращаюсь к веб-сервису через его URL-адрес и вызывается методу, он возвращает значение, выбранное клиентом. проблема при доступе к веб-методу из консольного приложения. – krafo

+0

Попробуйте статический метод. +1 –

0

Проверьте, не отличаются ли значения элементов в раскрывающемся списке. Это важно для выбранного события с измененным индексом, которое должно быть запущено.

1

Проблема в том, что при запуске консольного приложения создается новый сеанс. Использование состояния приложения с помощью Application.Set и Application.Get решило проблему. Надеюсь, у меня не будет проблем, когда система будет использоваться несколькими пользователями.

Смежные вопросы