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.

Foi útil?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top