Como obter sessionID em um pedido em que enableSessionState = "false"
-
21-09-2019 - |
Pergunta
Eu quero poder conseguir o Identificação de sessão da sessão atualmente autenticada em um WebMethod função onde EnableSession = false.
Eu não posso definir EnableSession = true a essa solicitação, porque outra solicitação (longa) em uma página diferente é manter o SessionState bloqueado (enableSessionState == "true" não "readonly").
Existe uma maneira consistente de obter o Identificação de sessão de qualquer um Cookie de sessão do ASP.NET ou o Url Para sessões de cozinha? Eu posso codificá -lo sozinho, mas prefiro usar uma função que já está documentada e testada.
Muito obrigado,
Florim.
Solução
Parece não haver função ASP.NET que possa fazer isso, então eu inventei um hack meu, que funciona ... por enquanto;):
private string GetSessionID(HttpContext context)
{
var cookieless = context.Request.Params["HTTP_ASPFILTERSESSIONID"];
if (!string.IsNullOrEmpty(cookieless))
{
int start = cookieless.LastIndexOf("(");
int finish = cookieless.IndexOf(")");
if (start != -1 && finish != -1)
return cookieless.Substring(start + 1, finish - start - 1);
}
var cookie = context.Request.Cookies["ASP.NET_SessionId"];
if (cookie != null)
return cookie.Value;
return null;
}
Outras dicas
HttpContext.Current.Session.SessionID