asp.net – sesión – varias tabs del navegador – ¿diferentes sesiones?

Me gustaría mantener un estado de sesión por pestaña del navegador.

¿Es esto fácil (o incluso posible) de hacer en ASP.NET?

Ejemplo: un usuario pulsa Ctrl-T en Firefox 5 veces y visita el sitio en cada pestaña. Me gustaría que cada pestaña tenga su propio estado de sesión en el servidor

Para facilitar los estados de sesión de múltiples tabs para un usuario sin saturar la URL, haga lo siguiente.

En su función de carga de formulario, incluya:

If Not IsPostback Then 'Generate a new PageiD' ViewState("_PageID") = (New Random()).Next().ToString() End If 

Cuando guarde algo en su estado de sesión, incluya el ID de página:

 Session(ViewState("_PageID").ToString() & "CheckBoxes") = D 

Notas :

  • Al igual que con las ID de sesión en general, no puede confiar en que los usuarios maliciosos no cambiarán el Id. De sesión / ID de página. Esta es solo una solución válida para un entorno donde se puede confiar en todos los usuarios. Afortunadamente, ViewState ofrece más protección que el uso de un campo de entrada oculto.
  • No tendrá acceso a PageID hasta que ViewState se restaure en PostBack. Por lo tanto, no tendrá acceso a PageID en el controlador page_init ().
      

http://msdn.microsoft.com/en-us/library/ms178581.aspx

en este caso, cada pestaña recibirá una identificación única y se verá como si fuera otro visitante.

Usando la respuesta de Brian Webster , encontré un problema con XMLHttpRequests. Resultó que XMLHttpRequests no estableció el indicador IsPostback en verdadero y, por lo tanto, la solicitud parecía una nueva solicitud y uno terminaría teniendo un nuevo estado de sesión para esa solicitud. Para resolver ese problema, también verifiqué el valor de ViewState("_PageID")

para que mi código se vea así en C #:

 protected dynamic sessionVar; //a copy of the session variable protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack && ViewState["_PageID"] == null) { ViewState["_PageID"] = (new Random()).Next().ToString(); Session[ViewState["_PageID"] + "sessionVar"] = initSessionVar(); //this function should initialize the session variable } sessionVar = Session[ViewState["_PageID"] + "sessionVar"]; //... }