Цель — передать объект с одной страницы на другую. Объект помещается в сессию, для этого генерируется уникальный идентификатор
(GUID), по которому объект извлекается из сессии на другой странице.
GUID (Globally Unique Identifier)
— статистически уникальный 128-битный идентификатор. Его главная особенность — уникальность, которая позволяет создавать расширяемые сервисы и приложения без опасения конфликтов, вызванных совпадением идентификаторов.
var guid = Guid.NewGuid().ToString();
Передача Limit Function
В Page_Load
создать Limit Function:
Function f = FunctionBuilder.BuildEquals("Name", "Имя");
Передача объекта
Описывать класс, отметить его как Serializable
, создать экземпляр класса:
[Serializable]
public class Person
{
public string Name;
public Person()
{
this.Name = "unknown";
}
}
var f = new Person();
Сохранение объекта в сессии
Поместить объект f в сессию по ключу GUID:
HttpContext.Current.Session[guid] = f;
Передача идентификатора в строке запроса
Создать ссылку на странице
<asp:HyperLink runat="server" ID="MyLink" Text="Передать объект"></asp:HyperLink>
Для ссылки указать URL, в параметре guid
указать идентификатор:
MyLink.NavigateUrl = "~/SessionTest.aspx?guid=" + guid;
Получение объекта из сессии
На принимающей странице считать GUID из строки запроса, по нему считать объект из сессии:
string guid = Request.QueryString.Get("guid");
var myObject = Context.Session[guid];
ISerializable
Отказоустойчивость при хранении значений состояния сеанса
Состояние сеанса может завершиться (по умолчанию через 20 минут бездействия), и данные могут быть потеряны. Временем жизни состояния сеанса можно управлять при помощи атрибута timeout
раздела конфигурации sessionState.
В зависимости от требований приложения может понадобиться альтернативный состоянию сеанса способ хранения данных каждого пользователя. ASP.NET предоставляет дополнительные параметры для сохранения данных в приложении. Их сравнение содержится в разделе Рекомендации по управлению состоянием ASP.NET.