Erros de Javascript apenas no Servidor de Produção?

6

Estou no processo de lançar alguns sites asp.net do desenvolvimento à produção. Tudo parece estar funcionando bem no desenvolvimento, mas após o lançamento para a produção, recebemos vários erros de javascript ao acessar o site. Isso parece ser algo no servidor, já que esse mesmo código foi implantado em um servidor de teste e funciona bem com os mesmos clientes. O servidor é um Windows 2008 usando o IIS7

Erros sendo jogados:

Um número de erros de sintaxe (scriptResource) - 10 destes

Error: syntax error
Source File: http://website.com/ScriptResource.axd?d=abc032_vah79hasdf87&t=123456789
Line: 3
Source Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

Erro igual ao anterior, mas com WebResource.axd em vez de ScriptResource.axd - 2 destes

e depois dois que parecem ser a causa real?

Sys is not defined

e

WebForm_AutoFocus is not defined

----------------- Adendo --------------------

Como sugestões, olhei para o ScriptResource.axd e o WebResource.axd

O aplicativo da Web que está sendo implantado tem autenticação de formulários e redireciona para a página de login se qualquer página for referenciada além da página de login. Parece que isso está acontecendo com o ScriptResource.axd e o WebResource.axd (por exemplo, a página de login tenta fazer referência a esses itens, o redirecionamento acontece para que eles não recuperem o javascript, erros são lançados)

Para isso, adicionei tags de "localização" ao web.config para tentar permitir que todos os usuários acessassem esses itens, para que a página de login funcionasse (veja as seções relevantes do web.config abaixo)

<system.web>
   <authentication mode="Forms">
      <forms loginUrl="login.aspx" defaultUrl="home.aspx"/>
   </authentication>
   <authorization>
      <deny users="?"/>
      <allow users="*"/>
   </authorization>
   ...
</system.web>
<location path="ScriptResource.axd">
  <system.web>
    <authorization>
      <allow users="*"/>
      <!-- allow all users -->
    </authorization>
  </system.web>
</location>
<location path="WebResource.axd">
  <system.web>
    <authorization>
      <allow users="*"/>
      <!-- allow all users -->
    </authorization>
  </system.web>
</location>

Isso também não resolveu o problema. Existe alguma opção de configuração / configuração que impeça o funcionamento da tag de localização? Adicionamos as mesmas tags para páginas no aplicativo (para teste) e ele funciona na máquina dos desenvolvedores, mas não no servidor. Parece que se pudéssemos colocar essas tags de localização funcionando no servidor, tudo funcionaria, alguma sugestão?

    
por ChrisHDog 03.07.2009 / 01:49

6 respostas

1

OK, havia duas seções para este problema e duas resoluções:

Primeiro: o Sys está indefinido devido ao fato de o /ScriptResource.axd e o /WebResource.axd estarem em uma seção do site que estava redirecionando para a página de login (autenticação de formulários) que não estava recebendo o necessário javascript de volta desses arquivos.

Segundo: assim que as tags forem adicionadas para permitir a visualização desses itens, foi descoberto que o acesso anônimo foi desativado e parece que, para que as tags funcionem, o acesso anônimo deve ser ativado.

    
por 06.07.2009 / 03:58
2

Abra as URLs completas dos arquivos de origem (... ScriptResource.axd ...) em uma nova janela do navegador. Você deve ver algum conteúdo JavaScript. Se não, os componentes do asp.net ajax não estão instalados corretamente.

Sys is not defined

indica que o componente do lado do cliente Ajax não está lá, a classe sys não pode ser encontrada.

Se você estiver usando o .net 3.5, ele faz parte do framework e o problema deve estar no web.config, ao usar o .net 2.0 que você precisa ASP.NET AJAX 1.0 , se você instalar este msi no servidor, os arquivos vão para o GAC, o local central para componentes .net. Você pode colocar o arquivo único System.Web.Extensions.dll em seu diretório bin sem instalar o msi, mas ainda precisa das configurações corretas no arquivo web.config. O site ajax.asp.net tem muitas informações sobre tudo isso.

    
por 03.07.2009 / 05:27
1

Parece que você pode estar sentindo falta de um componente no servidor ou que a própria Web não está configurada corretamente para usar os componentes do ASP.NET Ajax. Talvez os desenvolvedores usaram outra biblioteca como o Ajax.NET Toolkit e ele precisa ser instalado no servidor?

    
por 03.07.2009 / 02:01
0

Para depurar isso, eu tentaria usar FiddlerTool e ver qual é a resposta exata de todos os recursos que sua página está tentando load (ScriptResource.axd e WebResource.axd). Pode haver algum conflito de versões com assmblies no GAC.

Existem alguns outros posts / discussões sobre este problema, talvez exista uma solução para você:

por 03.07.2009 / 10:44
0

Eu tive esse problema. O WebResource.axd não pôde encontrar WebForms.js (que é incorporado no System.Web.dll).

Eu consertei a instalação da estrutura do ASP.NET xx no servidor e funcionou depois disso.

    
por 16.09.2011 / 11:19
0

Eu tive o mesmo problema e acompanhei o código WebForm_Autofocus ausente em uma opção no web.config,. Quando esta opção foi removida / comentada, tudo funcionou e o script js foi gerado para todas as demais funções do script.

Parece ser um problema de web.config que pode exigir o endereço da Microsoft. Estou usando o VS 2010, versão 10.0.40210.1 SPIRel, com segmentação por código .Net 4.0. Eu não descobri o processo subjacente que mata a geração JS quando esta opção está ativa.

    
por 08.01.2013 / 21:24