Строго типа переменные сеанса в MVC 3 - PullRequest
0 голосов
/ 25 июня 2011

Я пытаюсь настроить оболочку сеанса в приложении MVC 3. Этот пост дает общее представление о том, что я хотел бы сделать: http://weblogs.asp.net/cstewart/archive/2008/01/09/strongly-typed-session-in-asp-net.aspx

Однако сессия всегда нулевая, когда к ней обращаются. Этот класс находится за пределами контроллеров, и в настоящее время к рассматриваемой переменной обращаются вне контроллеров.

Вот класс:

public sealed class SessionManager : IRequiresSessionState
{
    private const string CurrentCultureKey = "CurrentCulture";
    public static Culture CurrentCulture
    {
        get
        {
            if (null != HttpContext.Current.Session[CurrentCultureKey])
                return (Culture)HttpContext.Current.Session[CurrentCultureKey];

            return Culture.En;
        }
        set
        {
            if (HttpContext.Current.Session != null)
            HttpContext.Current.Session[CurrentCultureKey] = value;
        }
    }
}

Я добавил IRequiresSessionState, но это тоже не сработало.

Я использую эту переменную, чтобы помочь с пользовательской маршрутизацией, в случае, если у меня не может быть культура в адресе (/ En / Controller / Action), которую я хотел отследить в сеансе. Это было бы полезно для пользовательских просмотров ошибок.

У меня такое ощущение, что я иду по неправильному пути, поэтому, если кто-нибудь сможет указать мне правильное направление, я буду признателен.

1 Ответ

0 голосов
/ 01 июля 2011

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

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

...