Файлы cookie не устанавливаются в С#

Я использую файлы cookie, чтобы узнать, была ли страница загружена раньше или нет. Итак, при загрузке страницы страницы asp.net С# я использую это

if (Request.Cookies["PageLoaded"] == null)
{
   //Initialize things if page loading for first time.
}

и внутри, если в качестве последнего параметра, я устанавливаю значение файлов cookie, как указано ниже.

if (Request.Cookies["PageLoaded"] == null)
{
   //Initialize things if page loading for first time.

   //Set cookies value to indicate page has loaded before
   Response.Cookies["PageLoaded"].Value = "True";
}

Когда я запускаю локальный хост, он работает нормально. Но когда я размещаю его на сервере для каждой загрузки страницы (события обратной передачи), начальное выражение if истинно (т.е. cookie всегда равно нулю) и входит в цикл.

Я делаю что-то неправильно? Как я могу сделать это в С#? Спасибо


person Zach    schedule 13.09.2011    source источник
comment
Включен ли SessionState на сервере?   -  person leppie    schedule 13.09.2011
comment
идет внутри цикла? Какая петля?   -  person spender    schedule 13.09.2011
comment
Привет, спасибо, не могли бы вы пролить немного больше света на это. Могу ли я сделать это в коде или это настройка на стороне сервера?   -  person Zach    schedule 13.09.2011
comment
Внутри цикла if, упомянутого выше   -  person Zach    schedule 13.09.2011
comment
Вам нужно в вашем Web.config под system.web запись для <sessionState mode="InProc" cookieless="false" timeout="20" />   -  person leppie    schedule 13.09.2011
comment
Я тоже так пробовал, но все так же. Также добавлено enablesessionstate в директиву страницы?   -  person Zach    schedule 13.09.2011


Ответы (1)


Попробуйте установить дату истечения срока действия для вашего файла cookie, по умолчанию, если вы не установите дату истечения срока действия для файла cookie, он будет непостоянным и будет храниться только как часть информации о сеансе, поэтому, когда вы закроете браузер, файл cookie будет удален, например.

Response.Cookies["PageLoaded"].Value = "True";
Response.Cookies["PageLoaded"].Expires = DateTime.Now.AddDays(1);
person James    schedule 13.09.2011
comment
Спасибо за ответ. Но не успех. - person Zach; 13.09.2011
comment
@Leppie - возможно, он просто никогда не закрывал браузер! - person James; 13.09.2011
comment
@Leppie - да, но тот факт, что он говорит, что он работает на локальном хосте, указывает на то, что состояние сеанса включено (по крайней мере, на сервере разработки). Глядя на его комментарий к вашему вопросу, кажется, что он включен. Еще одно предложение может заключаться в том, чтобы убедиться, что в вашем браузере включены файлы cookie. - person James; 13.09.2011