2013-02-11 7 views
6

В ASP.NET WebApi, размещенном в IIS 7, имеет ли он доступ к сеансу? Похоже, Session имеет значение HttpContext.Current.ASP.NET WebApi Session vs Static Variables

В чем разница между этими двумя для хранения глобальной переменной?

private static Dictionary<string, string> ConnectionStrings 
    { 
     get 
     { 
      if (HttpContext.Current.Session["ConnectionStrings"] == null) 
       HttpContext.Current.Session["ConnectionStrings"] = new Dictionary<string, string>(); 

      return HttpContext.Current.Session["ConnectionStrings"] as Dictionary<string, string>; 
     } 
    } 

и

private static Dictionary<string, string> connectionStrings = new Dictionary<string, string>(); 

Должен ли я использовать сессию или статические переменные для хранения строк подключения, которые динамически сгенерированные (длинная история)?

ответ

6

Ну, переменная сеанса должна быть за пользователей. Статическая переменная - это переменная, которая будет делиться между всеми пользователями. Итак, я понятия не имею, зачем хранить строку подключения для пользователя, но если вам нужно это сделать, вы не можете использовать одну статическую переменную. Теперь вы можете использовать статическую переменную и сделать ее словарем, где ключ является пользователем, а значение - тем, что вы хотите сохранить. Это, безусловно, сработает.

Сказав все это, вы можете имитировать сеансы с использованием куков (которые в конечном счете, является то, что сеансы использовать в любом случае (обычно)): См Accessing Session Using ASP.NET Web API