Artigo: 917412 - Última revisão: segunda-feira, 3 de Dezembro de 2007 - Revisão: 1.5

Poderá ser redireccionado para a página de início de sessão de autenticação de formulários ou poderá receber uma mensagem de erro quando tenta executar uma aplicação é criada utilizando o .NET Framework 2.0

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.
Expandir tudo | Reduzir tudo

Sintomas

Quando tenta executar uma aplicação é criada utilizando o Microsoft .NET Framework 2.0, poderá ser redireccionado para a página de início de sessão de autenticação de formulários. Em alternativa, poderá receber uma mensagem de erro semelhante à seguinte:
Erro de servidor de ' / WebSites1 ' aplicações.
--------------------------------------------------------------------------------

Referência de objecto não definida como uma instância de um objecto.

Descrição: Ocorreu uma excepção não processada durante a execução da solicitação da web actual. Reveja o rastreio da pilha para mais informações sobre o erro e onde tem origem no código.

Detalhes da excepção: System.NullReferenceException: Object reference not set to an instance of um objecto.
Nota Poderá detectar outros problemas causados por perda de sessão.

Este problema poderá ocorrer quando uma ou ambas as seguintes condições se verificar:
  • Migrar uma aplicação Web do .NET Framework 1.1 para o .NET Framework 2.0.
  • Utilize um script, uma aplicação de Java, ou no lado cliente para efectuar um pedido de uma Web do controlo ActiveX um Microsoft aplicação.

Causa

Este problema ocorre porque o atributo HttpOnly impede que qualquer script do cliente acedam cookie da sessão. O atributo HttpOnly é adicionado ao cookie de sessão no .NET Framework 2.0.

Resolução

Para resolver este problema, defina o atributo HttpOnly para o cookie de sessão para o valor false .

Nota Definir o atributo HttpOnly com o valor true não impede que um utilizador mal intencionado aceder directamente o cookie quando o utilizador mal intencionado tenha acesso ao canal de rede. Considere utilizar (Secure Sockets Layer) para ajudar a proteger contra esta situação. Estação de trabalho segurança também é importante. Um utilizador malicioso pode utilizar uma janela aberta do browser ou num computador que contém os cookies persistentes para aceder um Web site utilizando a identidade do utilizador legítimas.

Para definir o atributo HttpOnly para o valor false , substitua o método Session_Start no ficheiro global.asax utilizando o seguinte código.
   void Session_Start(object sender, EventArgs e)
        {
            if (Response.Cookies.Count > 0)
            {
                foreach (string s in Response.Cookies.AllKeys)
                {
                    if (s == System.Web.Security.FormsAuthentication.FormsCookieName || s.ToLower() == "asp.net_sessionid")
                    {
                        Response.Cookies[s].HttpOnly = false;
                    }
                }
            }
        }
Nota se pretender reutilizar este código em várias aplicações, coloque este código numa classe HttpModule personalizada.

Mais Informação

Para obter mais informações sobre o atributo HttpOnly , visite o seguinte Microsoft Developer Network (MSDN) Web site:
http://msdn2.microsoft.com/en-us/library/system.web.httpcookie.httponly.aspx (http://msdn2.microsoft.com/en-us/library/system.web.httpcookie.httponly.aspx)
Para obter mais informações sobre a classe HttpModule , visite o seguinte site da Web MSDN:
http://msdn2.microsoft.com/en-us/library/zec9k340(vs.71).aspx (http://msdn2.microsoft.com/en-us/library/zec9k340(vs.71).aspx)
Para mais informações sobre as alterações recentes no .NET Framework 2.0 e o atributo HttpOnly , visite o seguinte site da Web MSDN:
http://msdn2.microsoft.com/en-us/netframework/aa497240.aspx (http://msdn2.microsoft.com/en-us/netframework/aa497240.aspx)
Os produtos de outros fabricantes explicado neste artigo são fabricados por empresas independentes da Microsoft. A Microsoft não oferece nenhuma garantia, expressa ou implícita, relativamente ao desempenho ou fiabilidade destes produtos.

A informação contida neste artigo aplica-se a:
  • Microsoft .NET Framework 2.0
  • Microsoft ASP.NET 2.0
Palavras-chave: 
kbmt kbprb kbbug kbinfo kbnofix kbtshoot KB917412 KbMtpt
Tradução automáticaTradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 917412  (http://support.microsoft.com/kb/917412/en-us/ )