ASP.NET изменить SessionID - PullRequest
       29

ASP.NET изменить SessionID

1 голос
/ 02 марта 2012

я должен изменить SessionID для приложения ASP.NET 4.0 (SessionID через Cookies), чтобы он запускался на 2 доменах с одним и тем же сеансом (http://web1.local и http://web2.local).).2 домена.

Для этого у страницы будет iframes с "setkey.aspx / ashx", который должен установить новый SessionID.

<iframe src="http://web1.local/SetKey.aspx?sid=<%=Session.SessionID%>" width="250" height="100"></iframe>
<iframe src="http://web2.local/SetKey.aspx?sid=<%=Session.SessionID%>" width="250" height="100"></iframe>

В Session.Start сеансуже заполнен, поэтому SessionID остается статичным с помощью нескольких запросов от одного и того же Broeser.

Я нашел несколько сообщений, в которых в основном используется SessionIDManager.SaveSessionID, но я не смог заставить ни один из них работать.

я нашел этот код, но где мне его вызвать? (global.asax / default.aspx / setjey.aspx / ashx?)

Dim Redirected As Boolean = False
Dim Added As Boolean = False

Dim SID = Request.QueryString("sid")
If Not String.IsNullOrEmpty(SID) AndAlso SID.Length = 24 Then
    Dim SM As New SessionIDManager
    SM.InitializeRequest(HttpContext.Current, False, True)
    SM.RemoveSessionID(HttpContext.Current)
    SM.SaveSessionID(HttpContext.Current, SID, Redirected, Added)
End If

Кто-нибудь заставил этот код работать правильно?

1 Ответ

0 голосов
/ 02 марта 2012

Я попытался просто установить cookie в обработчике Application_EndRequest Global.asax, и он работает. Вот в C #, но вы поняли ...

void Application_EndRequest(object sender, EventArgs e)
{
   var ctx = HttpContext.Current;
   ctx.Response.Cookies.Remove("ASP.NET_SessionId");
   ctx.Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId", ctx.Request.QueryString("sid")));
}
...