2013-09-18 4 views
0

Как наилучшим образом отслеживать информацию пользователя, sesssion Id, cookies? один раз для сеанса пользователя. В Default.aspx:asp.net отслеживание информации о пользователе

protected void Page_Load(object sender, EventArgs e) 
{ 
    IF (!isPostPack) 
    { 
    var sessionValue= System.Web.HttpContext.Current.Request.Cookies["ASP.NET_SessionId"] != null ?      System.Web.HttpContext.Current.Request.Cookies["ASP.NET_SessionId"].Value : string.Empty; 
    cONSOLE.WRITELINE(sessionValue); 
    } 

} 

Это не оптимизируют. есть ли все равно, чтобы получить только один раз сеанс iD, за пользователя?

+0

Session_OnStart в Global.asax? – Tim

+0

В глобальном asax Session_OnStart запрос на файлы cookie/сеанса недействителен. Объект не установлен в ссылку – ColoradoYo

ответ

0
var sessionValue = System.Web.HttpContext.Current.Request.Cookies["ASP.NET_SessionId"] 
!= null ? 
System.Web.HttpContext.Current.Request.Cookies["ASP.NET_SessionId"].Value : string.Empty; 

Все, что даст вам, является идентификатором, который ASP.Net использует для отслеживания сеанса. Это редко нужно для прямого доступа к коду.

Но считая, что является, что вы хотите, это будет очень быстро. Для того, чтобы сделать его чище, вы можете:

  • Доступ Request напрямую (нет необходимости в HttpContext внутри Page)
  • магазин значение в переменной класса уровня, который будет жить в течение всего жизненного цикла страницы.
private string _sessionId; 

protected void Page_Load(object sender, EventArgs e) 
{ 
    _sessionId = Request.Cookies["ASP.NET_SessionId"] != null 
     Request.Cookies["ASP.NET_SessionId"].Value : string.Empty; 
} 

Если вы хотите сделать это только один раз за сеанс (в комментариях):

protected void Session_Start(object sender, EventArgs e) 
{ 
    using(var writer = File.CreateText(@"c:\temp\session-id.txt")) 
    { 
     writer.WriteLine(Session.SessionID); 
    } 
} 
+0

Тим, а если хранить значение в потоковом файле, то как можно Page_Load убедиться, что только один раз я получу идентификатор сеанса и напишу его? – ColoradoYo

+0

Итак, вы пытаетесь сохранить идентификатор сеанса только один раз за сеанс (например, в файл журнала?) –

+0

да. это моя идея. – ColoradoYo

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