2013-03-24 3 views
3

У меня есть веб-приложение, когда первый пользователь входит в систему и открывает свой профиль и выходит из системы.
, когда второй пользователь регистрируется на том же компьютере после выхода из системы первого пользователя и открывает профиль, показывая первый профиль пользователя. второй пользователь должен обновить страницу.
, как предотвратить это, я использовал
asp.net mvc после выхода из системы при входе в систему от другого пользователя предыдущая деталь пользователя показывает

[OutputCache(NoStore = true, Duration = 60, VaryByParam = "*")] 
public ActionResult profile() 
{ 
    usertb user = db.usertbs.SingleOrDefault(a => a.EMail == userid); 
    return View(user); 
} 


пожалуйста, помогите мне решить это

+1

Как вы выхода из пользователя. Отправьте свой код. – lopezbertoni

+0

как @lopezbertoni указал, лучше всего показать свой метод выхода из системы –

ответ

4

ли работа, если удалить атрибут OutputCache от метода действия?

//[OutputCache(NoStore = true, Duration = 60, VaryByParam = "*")] 
public ActionResult profile() 
{ 
    usertb user = db.usertbs.SingleOrDefault(a => a.EMail == userid); 
    return View(user); 
} 

Если это так, вы должны быть в состоянии решить эту проблему с помощью двух шагов. Во-первых, это в вашем Global.asax файл:

public override string GetVaryByCustomString(HttpContext context, string custom) 
{ 
    return "User".Equals(custom, StringComparison.OrdinalIgnoreCase) 
     ? User.Identity.Name 
     : base.GetVaryByCustomString(context, custom); 
} 

После этого, вы можете использовать следующий OutputCache атрибут вашего действия:

[OutputCache(NoStore = true, Duration = 60, VaryByCustom = "User")] 
public ActionResult profile() 
{ 
    usertb user = db.usertbs.SingleOrDefault(a => a.EMail == userid); 
    return View(user); 
} 
0

Все, что вам нужно, это установить местоположение вашего OutputCache к Клиент, это будет кэшировать персонализацию данных в браузере, и каждый пользователь получит свой кеш.

[OutputCache(NoStore = true, Duration = 60, VaryByParam = "*", Location=OutputCacheLocation.Client)] 
public ActionResult profile() 
{ 
    usertb user = db.usertbs.SingleOrDefault(a => a.EMail == userid); 
    return View(user); 
} 

Смотреть это: Improving Performance with Output Caching (C#)