Оригинальный вопрос
Привет всем,
Я немного запутался в том, как MVC отображает HTTP-запросы в состояние сеанса.
Мой HTTP-запрос выглядит так:
GET / HTTP/1.1
Host: test.net
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.32 Safari/532.0
Accept: application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
Как сервер узнает, на какой пользовательский сеанс это сопоставить? На самом деле нет никаких флагов, которые отмечают, кто я. Единственный способ предположить, что он использует исходный IP-адрес запроса?
Причина, по которой я спрашиваю, состоит в том, что я из моей корпоративной сети (с одним и тем же общедоступным IP-адресом) захожу на сайт MVC, он действует так, как если бы мы все использовали один сеанс.
Если он на самом деле использует IP, то есть способ изменить его на использование файла cookie SessionID. Я возился с web.config для некоторых других постов, но мне не повезло.
Ваша помощь очень ценится.
Спасибо,
Chris
<ч />
Разрешение
Итак, как вы все догадались, оказывается, что я кое-что делаю что-то невероятно неправильное. Я создаю класс, чтобы абстрагировать процесс захвата сессии вар. Класс имеет статические свойства, которые извлекаются из состояния сеанса:
public class SessionValue
{
private static HttpSessionState Session = HttpContext.Current.Session;
private const string stepId = "currentStep";
private const string username = "username";
public static int StepId
{
get
{
if (Session[stepId] == null)
{
Session[stepId] = 1;
}
return (int)Session[stepId];
}
set
{
Session[stepId] = value;
}
}
public static string Username
{
get
{
if (Session[username] == null)
{
Username = "";
}
return (string)Session[username];
}
set
{
Session[username] = value;
}
}
}
По какой-то причине я предполагал, что объявление статической переменной будет воссоздано с каждым веб-запросом, что, безусловно, является очень пьяным заблуждением, поскольку это будет установлено только один раз при первой загрузке приложения. Я до сих пор понятия не имею, с чем это на самом деле было связано, поскольку казалось, что какой-то сеанс поддерживался.
Тем не менее, изменение свойств для непосредственного использования HttpContext.Current.Session [string] решило проблему. Спасибо всем за помощь.