Pergunta

Vamos dizer que você tem uma página aspx que não depende de sessão, mas se baseia em viewstate para persistência entre postbacks.

Se um usuário está acessando esta página e folhas para um longo almoço, vai viewstate ainda ser válido quando ele volta?

Foi útil?

Solução

No ViewState é mantido como parte do processo de PostBack. Você pode, no entanto, override SavePageStateToPersistenceMedium a classe de página () e LoadPageStateFromPersistenceMedium (), para implementar o comportamento que se desejar. Para mais informações leia href="http://msdn.microsoft.com/en-us/library/ms972976.aspx" Compreender o ASP.NET ViewState .

Note que página ViewState é armazenado na sessão assim se sua sessão expirar, o ViewState serão perdidos. Eu não diria que este é ViewState expirar, mas sim, ele será destruído após o tempo limite da sessão.

Outras dicas

si Viewstate não expira. Uma vez que é enviada de volta em forma, ele pode ser reconstituído qualquer momento.

De acordo com MSDN :." .. ele é possível para o estado de exibição para expirar se uma página não é enviada de volta dentro do tempo de expiração da sessão ". Então, em uma rodada sobre o tipo de forma, ele pode expirar se a sua sessão faz, mas viewstate não expira diretamente. Desde que você não está usando o estado da sessão de qualquer maneira, você não precisa se preocupar com vencimento implícita.

Note que eu não teria dito que expirou. Isso foi MS que eu citei em seu próprio artigo intitulado Controle ViewState

Viewstate não expira.

Todos os dados viewstate é armazenado no cliente e é submetido volta para o servidor quando o usuário executa uma nova postagem.

Isto tem algumas implicações muito interessantes, e é explicado muito completamente aqui .

Além disso, como uma pegadinha, por padrão ASP.NET criptografa ViewState com uma chave gerada automaticamente. Isso pode ser substituído com o elemento MachineKey no arquivo web.congif. Mesmo que ViewState não irá expirar, pode se tornar inválido se uma chave gerada automaticamente diferente é usada para descriptografar ViewState, como depois de uma IIS Reset, reinstalação de um aplicativo, ou bater um servidor diferente em uma fazenda web. Se você está pensando em armazenar viewstate por longos períodos de tempo, atente para como ele é criptografado / descriptografado.

http://msdn.microsoft.com/en-us/library/ ms998288.aspx

Sim, ViewState expira em certas condições Por exemplo, quando você estiver usando iframe:. S, ou quando você está upkeeping conexão "ao vivo" para o servidor com postagens regulares. Então você pode querer investigar esta opção: <sessionPageState historySize="9"/>, que realmente difícil códigos quantas "resultados de postagem" são armazenados no Session (se SessionPageStatePerster é usado). Cada postagem armazena de ViewState para o fim da fila na sessão [ "__ VIEWSTATEQUEUE"] e exclusões ViewStates que são "demasiado velho". E como você acha que SessionPageStatePerster decide qual ViewStates são muito antigas .. configurando alguns historySize-constante arbitrária no web.config .. Omg! Ele também me uma eternidade para encontrar este problema ... Meu ódio por programação asp.net é indescritível agora .. Grrr ...

Viewstate não expira, enquanto eles ainda estão na página, ele ainda estará lá e funcional.

O ViewState persistirá de posto para posto. Na verdade, é armazenado dentro de um campo oculto em seu formulário para que ele seja enviada de volta para o servidor o tempo todo.

Enquanto você não está confiando na sessão você não deve ter quaisquer problemas reconstrução estado da página. É fácil de testar o seu código do estado da página Se quiser, porém: apenas definir a sua sessão para expirar após 60 segundos em seu web.config em seguida, carregar a página, espere um pouco mais de um minuto (de surf sobre a Stack Overflow e responder a algumas perguntas) e clique em um botão em sua página.

Infelizmente para reviver esta discussão antiga, mas novas informações estão disponíveis agora:

Sim, ViewStates expirar . Venho de 19 horas pesquisando sobre um problema de ViewStates perdendo seus valores entre postbacks longo intervalo de tempo. Ele me levou a ao ler documentos MSDN e Stackoverflow responde dizendo que era basicamente impossível de acontecer a menos que um costume ViewState implementação de armazenamento foi empregado, que, agora eu sei, isso não é verdade.

Meu problema estava ocorrendo em um ambiente SharePoint 2013. O serviço conhecido como Distributed Cache (A.K.A. AppFabric ) faz o cache do ViewState e tem um Time to Live associado a ele. Você pode encontrar mais informações aqui: http: // blogs .msdn.com / b / besidethepoint / Arquivo / 2013/03/27 / AppFabric-caching-and-sharepoint-1.aspx

O pouco de informação interessante pode ser encontrada nesta frase: "Para melhorar o desempenho da página, começando no SharePoint 2013 SharePoint armazena em cache do lado do servidor de dados ViewState em vez de transferi-lo para trás e para os clientes."

Espero que esta informação ajuda a alguém tão desesperado quanto eu tinha 19 horas atrás.

ViewState é mantido em um campo escondido na própria página. Então, enquanto o usuário tem a página, ele vai ter o ViewState. Mas se o seu aplicativo registra automaticamente o usuário após um determinado período de tempo, continua a ter a ViewState pode não lhe fazer nenhum bem.

Por padrão, Viewstate é incluído com o conteúdo html como uma entrada escondida. Isso significa que não expira, mas que tudo no viewstate deve ser carregado a partir do navegador do usuário. Uma vez que é normalmente a parte mais lenta a conexão em um local público, colocando um monte de coisas no viewstate pode rapidamente fazer o seu site parece muito lento.

A resposta curta é: Não.

A resposta mais longa é: depende de implementação de armazenamento ViewState. Você pode fornecer implementação personalizada do ViewState que poderia expiram após determinado período de tempo. Por exemplo, você pode armazenar ViewState no banco de dados ou no disco e enviar apenas alguma referência ao valor armazenado em um campo oculto. Então você pode usar o processamento em lote para remover dados ViewState desatualizados ou realizar validade mediante solicitação.

No Viewstate doesnot expires.After redirecionar para outra página, em seguida, o valor de estado de exibição perdido ou expirar viewstate. para mais detalhes http: //www.c-sharpcorner .com / UploadFile / 78d182 / Asp-Net-state-gestão técnicas /

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