2015-12-09 3 views
0

Я определил статический класс. В этом статическом классе у меня есть следующий метод.Статический класс и переменные сеанса

public static int GetUserId() 
{ 
    if(IsUserLoggedIn()) 
    { 
     return Convert.ToInt16(HttpContext.Current.Session["user"]); 
    } 
    return 0; 
} 

Мой вопрос: когда эта функция запускается для каждого пользователя, будет ли каждый пользователь получать другое значение? (учитывая, что каждый пользовательский сеанс получает разные userId для сеанса ["user"].

Я не знаю, полезен ли для этого статический класс или может вызвать проблемы с конфликтом. Я разрабатываю в C#/ASP.NET

+2

Да было бы получить различные значения, если все сеанса установить разные значения. Статическая реализация метода GetUserId не имеет ничего общего. –

+0

В: Мне любопытно - компилирует ли код? – paulsm4

+1

@ paulsm4 Что заставляет вас думать, что это приведет к ошибке компиляции? –

ответ

4

Короче говоря, я считаю, что ответ да, но вы должны избегать жестко закодированных зависимостей в не фабричных методах ... Рассмотрите прием состояния сеанса или в по крайней мере, для объекта HttpContext, например:

public static int GetUserId(HttpContext context) 
{ 
    if(IsUserLoggedIn()) 
    { 
     return Convert.ToInt16(context.Session["user"]); 
    } 
    return 0; 
} 

Вы должны, скорее всего, использовать встроенное свойство IPrincipal (User) в HttpContext, IMHO.

1

HttpContext будет отличаться для каждого запроса, так да.

 Смежные вопросы

  • Нет связанных вопросов^_^