Resumiendo las respuestas de @jrojo y @Maxam anteriores, con lo que estoy usando.
Estoy usando AWS DynamoDB como el almacén de sesiones (fuera del alcance de la pregunta un poco, pero da muestra).
Agregar paquete a través de Nuget: Instalar Paquete AWS.SessionProvider
Web Update.config para tener las llaves en appsettings:
<add key="AWSAccessKey" value="XXX" />
<add key="AWSSecretKey" value="YYY" />
y el proveedor de sesión para System.web:
<sessionState timeout="20"
mode="Custom"
customProvider="DynamoDBSessionStoreProvider">
<providers>
<add name="DynamoDBSessionStoreProvider"
type="Amazon.SessionProvider.DynamoDBSessionStateStore, AWS.SessionProvider"
AWSProfilesLocation=".aws/credentials"
Table="ASP.NET_SessionState"
Region="us-east-1"
/>
</providers>
</sessionState>
añadir nada a la sesión en global.asax de inicio de sesión:
void Session_Start(object sender, EventArgs e) {
HttpContext.Current.Session.Add("somethingToForceSessionIdToStick", string.Empty);
}
Verificar por agregando esto a la afeitadora de cualquier página. Refrescar la página, a continuación, abra una ventana de Ignito y ver una sesión diferente:
@HttpContext.Current.Session.SessionID
BobsYourUncle
pierde la sesión incluso si pones algo en ello. La clave de la máquina dentro de web.config es lo único que soluciona ese problema –
Solo si hubo una granja de servidores web involucrada. Y si lees el comentario del OP en una de las respuestas, encontrarás que agregar un elemento a la variable de sesión solucionó el problema. – Maxam
Mi proveedor de hosting no tiene granja de servidores web, y agregar cosas a la sesión no lo arregla. Todavía lo pierdo después de unos minutos, incluso si tengo muchas cosas en la sesión (usuario de Loaded, su cesta de compras, ...) Intenté con 2 proveedores de hosting –