ERR_CACHE_MISS ao navegar de volta para uma página ASPX

9

Eu tenho um aplicativo WebForms onde a primeira página é basicamente uma grade contendo links para uma segunda página que carrega um visualizador de PDF. A grade está localizada em um controle .ascx. Tudo está funcionando desde a primeira página até a página do visualizador de PDF. No entanto, quando eu aperto o botão Voltar para retornar à primeira página. Recebo o seguinte erro (no Chrome, mas isso também está acontecendo em outros navegadores):

Seeuclicarnobotãovoltar,onavegadorretornaráàprimeirapáginaetudoestarábem,maseuprecisoresolveresseerro.

Eutenteidesativarocachenaprimeirapáginacombasenarecomendaçãode esta resposta do StackOverflow , assim:

Response.AppendHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.
Response.AppendHeader("Pragma", "no-cache"); // HTTP 1.0.
Response.AppendHeader("Expires", "0"); // Proxies.

Eu também tentei isso:

Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetNoStore();
Response.Cache.SetExpires(DateTime.MinValue);

Eu coloquei este código no código por trás da página .aspx e no controle .ascx (nos métodos OnInit), tudo sem sucesso. O que estou perdendo aqui?

    
por FishBasketGordo 15.05.2015 в 00:40
fonte

2 respostas

3

Como o @JJS sugeriu, parece que você está usando um OnClick (possível via LinkButton ou ImageButton) que está causando um postback parcial / total e seu redirecionamento está ocorrendo no code-behind. Se isso estiver correto, há um motivo pelo qual você não está usando o HyperLinks?

A manipulação de cache não é a correção. O navegador está informando uma postagem entre as páginas.

    
por Drytin 20.05.2015 / 21:35
fonte
0

Substitua o método OnPreInit e defina várias propriedades relacionadas ao armazenamento em cache no objeto Response para impedir que o navegador armazene a página em cache.

protected override void OnPreInit(EventArgs e)
{
    base.OnPreInit(e);

    Response.Buffer = true;
    Response.ExpiresAbsolute = DateTime.Now.AddDays(-1d);
    Response.Expires = -1500;
    Response.CacheControl = "no-cache";
    Response.Cache.SetCacheability(HttpCacheability.NoCache);
}

você pode fazer algo semelhante para desativar o cache de páginas do navegador, da seguinte maneira:

   Response.Cache.SetCacheability(HttpCacheability.NoCache);
   Response.Cache.SetExpires(Now.AddSeconds(-1));
   Response.Cache.SetNoStore();
   Response.AppendHeader("Pragma", "no-cache");
    
por EnggForum 27.05.2015 / 10:03
fonte