2013-05-08 2 views
1

Редактировать: Sorry! Я забыл включить детали. Я использую C# в проекте MVC4.Создание нового файла cookie (перезапись старого) хранит список старых значений?

поэтому у меня есть некоторый код здесь, который должен 1. Создайте новые кук, если параметр Идентификатор_пользователя установлен, и один не были установлены уже 2. если куки не были установлены, и ни один параметр UserID не указанному, установите для параметра UserID значение 1 3. если новый параметр UserID установлен, обновите файл cookie новым UserID.

Проблема заключается в том, что если для пользователяID сначала установлен Jake, то для Joe, а затем для Bob, я получаю значение Cookie, которое выглядит так: «Bob, Joe, Jake». Это нормально? Похоже, было бы лучше очистить этот список. Спасибо заранее за ваше время.

public static void StoreID() 
{ 
    if ((HttpContext.Current.Request.Cookies["UserID"] == null) && (System.Web.HttpContext.Current.Request.Params["UserID"] != null)) 
    { 
     HttpContext.Current.Response.Cookies["UserID"].Value = System.Web.HttpContext.Current.Request.Params["UserID"]; 
     HttpContext.Current.Response.Cookies["UserID"].Expires = DateTime.Now.AddDays(1); 
    } 
    else if ((HttpContext.Current.Request.Cookies["UserID"] == null) && (System.Web.HttpContext.Current.Request.Params["UserID"] == null)) 
    { 
     HttpContext.Current.Response.Cookies["UserID"].Value = "1"; 
     HttpContext.Current.Response.Cookies["UserID"].Expires = DateTime.Now.AddDays(1); 
    } 
    else if ((HttpContext.Current.Request.Cookies["UserID"] != null) && (System.Web.HttpContext.Current.Request.Params["UserID"] == null)) 
    { 

    } 
    else 
    { 
     HttpContext.Current.Response.Cookies["UserID"].Value = System.Web.HttpContext.Current.Request.Params["UserID"]; 
     HttpContext.Current.Response.Cookies["UserID"].Expires = DateTime.Now.AddDays(1); 
    } 
} 

ответ

0

Хорошо, поэтому введение подразделами устраняет проблему. Не уверен, почему это работает так, как оно есть - если у кого-то есть какие-то сведения о том, почему это было бы здорово! Вот рабочий код:

if ((HttpContext.Current.Request.Cookies["UserInfo"]== null) && (System.Web.HttpContext.Current.Request.Params["UserID"] != null)) 
{ 
    HttpContext.Current.Response.Cookies["UserInfo"]["UserID"] = System.Web.HttpContext.Current.Request.Params["UserID"]; 
} 
else if ((HttpContext.Current.Request.Cookies["UserInfo"] == null) && (System.Web.HttpContext.Current.Request.Params["UserID"] == null)) 
{ 
    HttpContext.Current.Response.Cookies["UserInfo"]["UserID"] = "1"; 
} 
else if ((HttpContext.Current.Request.Cookies["UserInfo"] != null) && (System.Web.HttpContext.Current.Request.Params["UserID"] == null)) 
{ 

} 
else 
{ 
    HttpContext.Current.Response.Cookies["UserInfo"]["UserID"] = System.Web.HttpContext.Current.Request.Params["UserID"]; 
} 
Смежные вопросы