ViewState inválido apenas no Safari
Pergunta
Um dos sites que mantenho depende muito do uso de ViewState
(não é meu código).No entanto, em certas páginas onde o ViewState
está extra-inchado, o Safari lança um "Validation of viewstate MAC failed"
erro.
Isso parece acontecer apenas no Safari.Firefox, IE e Opera carregam com sucesso no mesmo cenário.
Solução 3
Tenho feito uma pequena pesquisa sobre isso e, embora não tenha muita certeza de que seja a causa, acredito que seja porque o Safari não está retornando o conjunto completo de resultados (portanto, cortando-o).
Estive em discussão com outro desenvolvedor e também encontrei a seguinte postagem no Canal 9 que recomenda usar o serviço SQL State para armazenar o viewstate evitando o problema de postback e também o tamanho da página.
Esta parece ser a melhor solução?
Outras dicas
Embora eu apoie a solução do Channel 9, esteja ciente de que em alguns ambientes hospedados o Safari não é considerado um navegador de nível superior.Pode ser necessário adicioná-lo ao navegador do seu aplicativo para poder usar alguns recursos do ASP.Net.
Essa foi a causa raiz de algumas dores de cabeça que tivemos no site de um cliente que usava o controle Menu ASP.
Minha primeira parada seria examinar os elementos da página e ver quais controles:
- Ainda funcionará quando eu desligar o ViewState
- Pode ser movido para fora da página e para uma chamada AJAX para ser carregada quando necessário
Se isso falhar, aqui está o aviso: nunca usei essa solução em um site voltado para a Web - mas no passado, quando quis eliminar ViewStates massivos em aplicativos de público limitado, armazenei o ViewState na sessão.
Funcionou para mim porque o impacto na memória não é significativo para o número de usuários, mas se você estiver executando um site bastante popular, eu não recomendaria essa abordagem.No entanto, se a solução Session funcionar para o Safari, você sempre poderá detectar o agente do usuário e falsificá-lo adequadamente.