sexta-feira, 23 de dezembro de 2011

Ajax Framework Failed to Load? Sys is not defined? WebForm_InitCallback is not defined? E agora?

Como começou

Tem um post fresquinho saindo do forno pra esse final de semana, que será uma introdução ao Ajax com Asp.Net.

Mas antes vou comentar um problema que me deu uma baita dor de cabeça essa semana. Vi mil soluções possíveis na internet e nenhuma funcionou pra mim.

Algumas páginas começaram apresentar os seguintes erros:
  • Ajax Framework Failed to Load
  • Sys is not defined
  • WebForm_InitCallback is not defined
Uma investigação rápida mostrou que o WebResources.axd estava retornando conteúdo em branco, em vez dos scripts que normalmente esperaríamos.

As fontes possíveis do problema, conforme discutidas em vários fóruns e blogs, apontavam principalmente para:
  • WebFarms;
  • Compressão de conteúdo;
  • Mapeamento incorreto ou inexistente da extensão .axd no IIS;
  • Presença de um HttpModule customizado que estivesse interceptando as requests e "desviando o tiro do alvo" para as url's com extensão .axd;
  • Data/Hora incorretas no servidor (pois é, isso também pode causar esse problema...);
  • Ausência da dll do AjaxToolkit na pasta \bin da aplicação
  • Instalação corrompida do .Net Framework, sendo necessário reparar a instalação

 Investiguei cada ponto e nenhum desses era aplicável ao projeto que eu tinha em mãos...

Como eu resolvi

Antes de tudo, "resolvi" significa "contornei". Meus .axd's continuam sem retornar nada...

O que eu fiz, nesse caso, foi alterar a propriedade "EnableCDN" para true em todos os meus objetos ScriptManager.

Com isso, em vez de fazer o download dos scripts a partir do meu próprio IIS (usando os WebResource.axd e ScriptResource.axd), meus objetos ScriptManagers vão procurá-los, antes, na CDN da Microsoft, e baixam os scripts a partir de lá.

Nenhum comentário:

Postar um comentário