Использование ответа Брайана Вебстера Я обнаружил проблему с запросами XMLHttp. Оказалось, что XMLHttpRequests не установил флаг IsPostback
в значение true, и, следовательно, запрос выглядел как новый запрос, и в результате у этого запроса было бы новое состояние сеанса. Чтобы решить эту проблему, я также проверил значение ViewState("_PageID")
так, чтобы мой код выглядел так в C #:
protected dynamic sessionVar; //a copy of the session variable
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack && ViewState["_PageID"] == null)
{
ViewState["_PageID"] = (new Random()).Next().ToString();
Session[ViewState["_PageID"] + "sessionVar"] = initSessionVar(); //this function should initialize the session variable
}
sessionVar = Session[ViewState["_PageID"] + "sessionVar"];
//...
}