Finalização de Variáveis de Sessão


Muitos interceptam o fechamento do navegador para finalizar alguma tarefa no servidor. A mais comum delas é “matar” a sessão do usuário, evitando que a mesma espere o timeout para ser removida da memória. Sendo assim, é necessário que voce invoque um método server-side para isso.

Uma alternativa é, no evento onUnload do JavaScript, abrir uma pop-up, apontando para uma página ASPX que, em seu evento Load, chame o método Abandon, remover individualmente cada uma delas ou fazer qualquer outro tipo de finalização. O problema desta técnica é com relação aos bloqueadores de pop-up que muitos navegadores possuem e, com essa funcionalidade habilitada, a abertura da janela de finalização não seria possível.

Sendo assim, podemos utilizar o Client Side Callbacks do ASP.NET 2.0 para isso. O código para isso, ficaria mais ou menos como:

public partial class _Default : System.Web.UI.Page, ICallbackEventHandler
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsCallback && Request.Browser.SupportsCallback)
        {
            string funcaoJS = this.ClientScript.GetCallbackEventReference(
                this,
                “””,
                “””,
                “””,
                “””,
                true);

            body.Attributes.Add(“onUnload”, funcaoJS);
        }

        //Adicionando Informações a uma Dummy Session
        HttpContext.Current.Session[“Dummy”] = “IsraelAece”;
    }

    public string GetCallbackResult() { return “”; }

    public void RaiseCallbackEvent(string eventArgument)
    {
        HttpContext.Current.Session.Remove(“Dummy”);
    }
}

Isso fará com que um trecho de código JavaScript seja embutido no cliente e, quando o evento onUnload ocorrer, o método será disparado removendo/executando o código para remoção de informações pertinentes ao usuário corrente.

Anúncios

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s