Pergunta

Eu estou tendo um problema muito ruim, onde não importa o que eu tente, o usuário está sendo registrado após 10 minutos.

Eu estou usando ASP.Net 2.0 em execução no IIS 6.0 no Server 2003 R2 Standard Edition executado como um servidor virtual com todas as atualizações e .Net aplicáveis ??3.5 SP1.

O cliente é o Internet Explorer 7.0

A seguir estão as configurações web.config:

<!-- Authentication Mode -->
<authentication mode="Forms">
  <forms name=".RecipeViewer" timeout="240" />
</authentication>

Abaixo está o código usado para definir o cookie de autorização:

Private Sub SetCookie(userName)
                ' Use security system to set the UserID within a client-side Cookie
                Dim ticket As New FormsAuthenticationTicket(1,userName, DateTime.Now, DateTime.Now.Add(Me.GetFormsAuthSettings.Forms.Timeout), True, String.Empty, FormsAuthentication.FormsCookiePath)
                Dim hash As String = FormsAuthentication.Encrypt(ticket)
                Dim cookie As New HttpCookie(FormsAuthentication.FormsCookieName, hash)

                cookie.HttpOnly = True

                If (ticket.IsPersistent) Then
                    cookie.Expires = ticket.Expiration
                End If

                Response.Cookies.Add(cookie)

                ' Redirect browser back to originating page
                Response.Redirect(Request.ApplicationPath)
End Sub

    Private Function GetFormsAuthSettings() As System.Web.Configuration.AuthenticationSection
        Return DirectCast(System.Configuration.ConfigurationManager.GetSection("system.web/authentication"), System.Web.Configuration.AuthenticationSection)
    End Function

Eu estava anteriormente usando o FormsAuthentication.SetAuthCookie, bem como sequer tentar os métodos FormsAuthentication.RedirectFromLoginPage, mas estes dois tivemos o mesmo resultado, o que é por isso que eu acabei fazendo a implementação do bolinho rígido que é feito internamente (via visualização no refletor ) que a classe FormsAuthentication faz.


A questão é não reprodutíveis no ambiente de hospedagem Visual Studio 2008 asp.net ou IIS 7.0.


Editar :. Cookies estão ativados, mesmo o site hospedado foi adicionado como um site confiável


Editar :. Google Chrome e Firefox não tem esse problema


EDIT :. Verificado biscoito na máquina alvo é configurado para expirar ap 4 horas conforme a definição (tempo limite = 240 minutos)


Editar : Como House diz que, todos mentem. Utilizador não chegou a testar a nova base de código e estava indo em uma noção pré-concebida de que o software ainda estava quebrado. Obrigado a todos que respondeu neste tópico.

Não fechar este por não mais relevante, mas mantê-lo por perto para ajudar as pessoas a resolver o problema, pois há alguns realmente boas técnicas de solução de problemas nesta questão.

Foi útil?

Solução

Ele também poderia (ter sido) que o machinekey não foi definido e, assim sendo gerado aleatoriamente cada vez que o aplicativo foi inicializado (o que significaria que a permissão de autenticação criptografado seria salgado com uma nova chave).

Eu uso um site para gerar um novo machinekey para meus aplicativos e colá-la no web.config:

http://www.orcsweb.com/articles/aspnetmachinekey.aspx

<?xml version="1.0"?>

<configuration>

    <appSettings/>
    <connectionStrings/>
    <system.web>

        <machineKey validationKey='FED01BCB246D3477F5854D60388A701508AD1DF9099BD3CAC3CA4DAF55F7524B8DD3FA03133BBCA381BC1CD639730445968DFA633A97911187EF187456D692F4' decryptionKey='861E7DF7C2D04297EEFAD47FF3B95F54E87CF28D6C2753D8' validation='SHA1'/>

    </system.web>
</configuration>

Outras dicas

Apesar de sua exigência é para o IE você pode usar o Firefox com Firebug e Firecookie para monitorar seus cookies e expirações.

No IE você pode baixar IE Developer Toolbar, em que se podem ver os valores de cookies usando o menu Cache \ Informação Ver Cookie.

É estranho se ele funcionar corretamente no Google Chrome, talvez você possa capturar a solicitação usando o evento Application_BeginRequest no global.asax e registrar os cookies recebidos e seus valores.

Exceções sem tratamento poderia estar causando o proc para reiniciar. Isto poderia adicionar ao comportamento estranho. Existe alguma coisa relatados nos eventlogs?

Lembro-me vagamente algo sobre as configurações de tempo limite de sessão do IIS ser capaz de substituir o que quer que você definiu no web.config. Verifique se suas propriedades de aplicação não definir um tempo limite de 10 minutos (Propriedades-> configuração-> Opções).

Eu tive um problema semelhante no passado, mas eu não tenho certeza que é o que você está falando. Estou certo de que o seu problema não acontece em sistemas de produção (ou qualquer sistema sob carga frequente)? Se assim for, o problema pode ser o tempo limite trabalhador thread inactivo. Você pode tentar mudá-lo ou desligá-lo sob o IIS Manager-> direito pools de aplicativos do clique, vá para a guia Desempenho, é a caixa de seleção sob Idle Timeout. O material na guia Reciclagem de que o diálogo também podem ser de seu interesse.

cliente não o código de produção de teste e ainda estava respondendo a partir da edição anterior antes de um patch foi aplicado ao seu ambiente de produção.

Se você não pode reproduzi-la no mesmo ambiente, eu recomendaria uma reunião onde você pode vê-los replicar o problema.


sinalizar esse como resposta após 48 horas.

mudar o seu estado de sessão para armazenar usando InProc, você provavelmente está enfrentando um problema semelhante ao meu que quando o usuário acertar um erro a sessão foi essencialmente apenas morrendo a cada momento em que não estava sendo armazenados usando InProc.

tipos de sessão: http://msdn.microsoft.com/en- us / library / ms178586 (v = vs.100) .aspx

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