http://msdn.microsoft.com/en-us/library/ms178194.aspx
Короче говоря, вы можете получить доступ к данным cookie пользователя, вызвав Response.Cookies, чтобы получить словарь объектов HttpCookie, для которых указано имя, которое вы даете каждому cookie (так же, как хранилища данных Session или ViewState). Вы можете добавить к этому, указав имя файла cookie в индексаторе, как если бы оно было там, и задав свойства Value и ExpirationDate, или создав новый HttpCookie и вызвав Cookies.Add.
Возможно, нет необходимости хранить весь URL-адрес, хотя файл cookie может содержать до 4 тыс. Данных. Вместо этого я бы сохранил строку запроса (которая имеет соответствующие настройки фильтра) под уникальным именем, которое эта конкретная страница будет знать для получения своих данных cookie (возможно, "<page name here>FilterSettings
"). Затем в PreInit получите запрос, и если его QueryString пуст, но есть файл cookie с сохраненными настройками фильтра, прикрепите сохраненную строку запроса к текущему URL-адресу и перенаправьте.
Помните, что клиент может контролировать, сохранять ли данные cookie; браузер может принять все, принять из надежных источников, спросить обо всех или отказаться от всех. В этом случае ничего страшного; это чистое удобство, именно для этого и нужно использовать cookie. Если бы это были ценные данные, возможно, вам пришлось бы сохранять их на стороне сервера в зависимости от пользователя.