none
Erro estranho na Session RRS feed

  • Pergunta

  • Galera, criei uma classe X que está herdando System.Web.UI.Page.

    em seguida criei uma propriedade assim:
    public bool UsuarioAutenticado 
    {
    get
    {
    if (Session["UsuarioAutenticado"] != null)
    {
    return true;
    }
    else
    {
    return false;

    }
    }



    dentro do arquivo default.aspx.cs , estou herdando a minha classe x na Default.

    Está aparecendo o seguinte erro:

    Session state can only be used when enableSessionState is set to true, either in a configuration file or in the Page directive. Please also make sure that System.Web.SessionStateModule or a custom session state module is included in the <configuration>\<system.web>\<httpModules> section in the application configuration.





    , ja tentei inserir diversas tags no web config como <pages enableSessionState="true" />, mas nada.

    alguem tem alguma luz?
    terça-feira, 5 de fevereiro de 2013 17:33

Respostas

  • cara muito obrigado pela atenção.

    mas eu consegui resolver aqui, no final das contas era porque eu estava tentando acessar o valor da session no construtor.. (ou seja a session não estava criada ainda).

    Valeu!

    • Editado CaioUechi quinta-feira, 7 de fevereiro de 2013 22:27
    • Marcado como Resposta CaioUechi quinta-feira, 7 de fevereiro de 2013 22:27
    quinta-feira, 7 de fevereiro de 2013 22:27

Todas as Respostas

  • Esse código está numa classe herdada pela página certo?

    Acontece que a Session só pode ser acessada no contexto da página. Talvez funcione se você usar:

    HttpContext.Current.Session["propriedade"]


    Twitter: @MayogaX
    Blog: Dev Blog

    • Sugerido como Resposta Ninho_Blink quarta-feira, 6 de fevereiro de 2013 15:32
    quarta-feira, 6 de fevereiro de 2013 10:39
  • Mayumi, vou tentar explicar melhor:

    Eu tenho uma pagina Login.ASPX, se o usuário logar e for autenticado, ele seta a Session["Autenticado"] = "1" e redireciona para a pagina Painel.aspx

    O painel.aspx , em seu code behind possui a classe painel que antes herdava o System.Web.UI.Page.

    o que eu fiz?

    criei uma classe chamada Permissao, que está herdando System.Web.UI.Page.
    Assim, agora ao inves de herdar o System.Web.UI.Page direto, eu herdo a classe Permissao no Painel.

    Na classe permissão eu criei uma propriedade e um construtor: 

    public bool UsuarioAutenticado
    {
    get
    {
    if ((String)Session["UsuarioAutenticado"] == "1")
    return true;
    else
    return false;
    }
    }

    public Permissao()
    {
    if (this.UsuarioAutenticado == false)
    {
    Server.Transfer("Login.aspx");
    }
    }

    ......

    O HttpContext.Current.Session fica como nullo e dispara um erro de objeto não referenciado =/

    quinta-feira, 7 de fevereiro de 2013 14:01
  • ja falaram para eu sobreescrever o page_onLoad, eu fiz isso, só que dai "ferrou" todo page_load da pagina que herda essa classe. =/

    quinta-feira, 7 de fevereiro de 2013 14:02
  • Não sei, e posso estar muito errado e sendo muito presunçoso, mas você percebeu que sua session que você está tentando pegar tem um nome diferente da que você setou, veja lá em cima você usa o nome "Autenticado" e no seu get você usa "UsuarioAutenticado", o que acontece é o seguinte, quando você faz o cast (Tipo)objetoASerConvertido, se o mesmo for nulo irá gerar exception, quando quer evitar isso use (objetoASerConvertido as Tipo) pois se ele for nulo não irá disparar exception, e verifique o nome de sua session talvez isso muda.


     
    Atenciosamente:
     
    Edney Batista da Silva - Desenvolvedor .Net, C#, Asp.Net, Java, SQL
     
    CONTATOS:
     
    Hotmail:
    edney_contato@hotmail.com
    Skype: edney.dyn

    quinta-feira, 7 de fevereiro de 2013 21:06
  • Pricila uma pequena correção, não é que a Session só possa ser acessada do Contexto da página, o que acontece é que Session é uma propriedade de System.Web.UI.Page ou seja não pode ser acessada de itens static pois estes não são membros de instância e sim de classe, o HttpContext.Current, simplesmente lhe devolve a instância do contexto atual, da página atual, possibilitando assim voce ter acesso em membros static.


     
    Atenciosamente:
     
    Edney Batista da Silva - Desenvolvedor .Net, C#, Asp.Net, Java, SQL
     
    CONTATOS:
     
    Hotmail:
    edney_contato@hotmail.com
    Skype: edney.dyn

    quinta-feira, 7 de fevereiro de 2013 21:10
  • cara muito obrigado pela atenção.

    mas eu consegui resolver aqui, no final das contas era porque eu estava tentando acessar o valor da session no construtor.. (ou seja a session não estava criada ainda).

    Valeu!

    • Editado CaioUechi quinta-feira, 7 de fevereiro de 2013 22:27
    • Marcado como Resposta CaioUechi quinta-feira, 7 de fevereiro de 2013 22:27
    quinta-feira, 7 de fevereiro de 2013 22:27