it-swarm-pt.tech

Sys é indefinido

Eu tenho um projeto de kit de controle ASP.Net/AJAX no qual estou trabalhando. 80% do tempo não há problema. A página é executada como deveria. Se você atualizar a página, ela às vezes exibirá um erro javascript "O sistema não está definido".

Isso não acontece o tempo todo, mas é reproduzível. Quando isso acontece, o usuário precisa desligar o navegador e reabrir a página.

Isso me leva a acreditar que poderia ser uma configuração IIS.

Outra nota. Eu olhei para a fonte da página quando recebo o erro e quando não. Quando a página gera erros, o seguinte código está ausente:

<script src="/ScriptResource.axd?d=EAvfjPfYejDh0Z2Zq5zTR_TXqL0DgVcj_h1wz8cst6uXazNiprV1LnAGq3uL8N2vRbpXu46VsAMFGSgpfovx9_cO8tpy2so6Qm_0HXVGg_Y1&amp;t=baeb8cc" type="text/javascript"></script>
<script type="text/javascript">
//<![CDATA[
if (typeof(Sys) === 'undefined') throw new Error('ASP.NET Ajax client-side framework failed to load.');
//]]>
</script>
60
James

Corrigi o meu problema movendo o bloco <script type="text/javascript"></script> que contém as chamadas Sys. * Para baixo (para o último item antes do fechamento da seção <asp:Content/> do corpo) no HTML da página. Originalmente, tive meu bloco de scripts na seção HEAD <asp:Content/> da minha página. Eu estava trabalhando dentro de uma página que tinha um MasterPageFile. Espero que isso ajude alguém.

53
Dean L

Quando eu experimentei os erros

  • Sys é indefinido
  • Falha ao carregar a estrutura do lado do cliente ASP.NET Ajax

em IE ao usar os controles ASP.NET Ajax no .NET 2.0, era necessário adicionar o seguinte ao arquivo web.config nas tags <system.web>:

<httpHandlers>
  <remove verb="*" path="*.asmx"/>
  <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
  <add verb="GET" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler" validate="false"/>
</httpHandlers>
12
Ray Vega

A resposta de Dean L, https://stackoverflow.com/a/1718513/29206 funcionou para mim, pois minha ligação para o Sys também era muito cedo. Como estou usando o jQuery, em vez de movê-lo para baixo, coloquei o script dentro de um documento.

$(document).ready(function () {
  Sys. calls here
});

Parece ser tarde o suficiente para que o Sys esteja disponível.

8
goodeye

Eu estava usando telerik e tinha exatamente o mesmo problema.

adicionar isso ao web.config resolveu meu problema :)

<location path="Telerik.Web.UI.WebResource.axd">   
   <system.web>  
     <authorization>  
       <allow users="*"/>  
     </authorization>  
   </system.web>  
</location>

talvez isso ajude você também. foi um problema de autenticação.

Origem

7
Zviadi

Tente definir o seu ScriptManager para isso.

<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="true" /> 
7
Compulsion

Experimente uma destas soluções:

1. O navegador falha ao carregar o script compactado

Geralmente, esse é o caso se você receber o erro no IE6, mas não em outros navegadores.

O Script Resource Handler - ScriptResource.axd compacta os scripts antes de retorná-los ao navegador. Nas versões anteriores à RTM, o manipulador fazia isso o tempo todo para todos os navegadores e não era configurável. Há um problema em um dos componentes do IE6 que impede o carregamento correto de scripts compactados. Consulte o artigo da KB aqui . Nas construções de [RTM_, fizemos duas correções para isso. Primeiro, não compactamos se o IE6 é o cliente do navegador. Segundo, agora tornamos a compactação configurável. Veja como você pode alternar o web.config.

Como você conserta isso? Primeiro, verifique se você está usando a versão AJAX Extensions 1.0 RTM. Só isso já deve ser suficiente. Você também pode tentar desativar a compactação editando seu web.config para ter o seguinte:

<system.web.extensions>
<scripting>
<scriptResourceHandler enableCompression="false" enableCaching="true" />
</scripting>
</system.web.extensions>

2. A configuração necessária para ScriptResourceHandler não existe para o web.config do seu aplicativo

Verifique se o seu web.config contém as entradas do arquivo web.config padrão fornecido com a instalação das extensões. (local padrão: C:\Arquivos de Programas\Microsoft ASP.NET\ASP.NET 2.0 AJAX Extensions\v1.0.61025)

3. O diretório virtual que você está usando para a web não está marcado corretamente como um aplicativo (portanto, a configuração não está sendo carregada) - Isso aconteceria com IIS webs.

Verifique se você está usando um aplicativo Web, e não apenas um diretório virtual

4. Solicitações ScriptResource.axd retornam 404

Isso geralmente aponta para uma configuração incorreta do ASP.NET como um todo. Em uma instalação padrão do ASP.NET, qualquer solicitação da Web para um recurso que termina em .axd é passada de IIS para o ASP.NET por meio de um mapeamento isapi. Além disso, o mapeamento está configurado para não verificar se o arquivo existe. Se esse mapeamento não existir ou se a verificação de arquivo não estiver desativada, IIS tentará encontrar o arquivo físico ScriptResource.axd, não o encontrará e retornará 404.

Você pode verificar se esse é o problema copiando/colando o URL completo para ScriptResource.axd a partir daqui e vendo o que ele retorna

<script src="/MyWebApp/ScriptResource.axd?[snip - long query string]" type="text/javascript"></script>

Como você conserta isso? Se o ASP.NET não estiver instalado corretamente, você poderá executar a ferramenta de linha de comando "aspnet_regiis.exe" para corrigi-lo. Está localizado em C:\WINDOWS\Microsoft.Net\Framework\v2.0.50727. Você pode executar "aspnet_regiis -i -enable", que faz o registro completo do ASP.NET com IIS e garante que o ISAPI esteja ativado no IIS6. Você também pode executar "aspnet_regiis -s w3svc/1/root/MyWebApp" para corrigir apenas o registro do seu aplicativo da web.

5. Resolvendo o erro "O sistema está indefinido" no ASP.NET AJAX RTM em IIS 7

Coloque esta entrada em <system.webServer/><handlers/>:

<add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />

e remova aquele em <system.web/><httpHandlers/>.

Referências: http://weblogs.asp.net/chrisri/demystifying-sys-is-undefinedhttp://geekswithblogs.net/lorint/archive/2007/03/28/ 110161.aspx

5
Alexandre N.

Você deve adicionar essas linhas no web.config

<httpHandlers>
  <remove verb="*" path="*.asmx"/>
  <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
  <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
  <add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false"/>
</httpHandlers>
<httpModules>
  <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</httpModules>
</system.web>

Espero que isto ajude.

5
Alcides Martínez

Além de garantir que você tenha o ScriptManager em sua página, você precisa garantir que o seu web.config esteja configurado adequadamente.

Quando o ASP.NET AJAX 1.0 foi lançado (para .NET 2.0), havia muitas configurações personalizadas do web.config que adicionavam manipuladores, controles etc.

Você encontrará as informações de configuração aqui: http://www.asp.net/AJAX/documentation/live/ConfiguringASPNETAJAX.aspx

4
Aaron Powell

Verifique se todos os scripts de clientes que você interage com o .NET AJAX possuem a seguinte linha no final:

if (typeof(Sys) !== 'undefined')  Sys.Application.notifyScriptLoaded();

Isso informa ao gerenciador de scripts que o arquivo de script inteiro foi carregado e que ele pode começar a chamar métodos cliente

3
Tom Carter

Eu odeio adicionar a um tópico tão grande e muito mais tarde, mas acho que tenho uma solução que funcione no VS2015, no mínimo.

Eu estava em uma busca para encontrar uma razão para o erro sys, e a única solução que funcionou para mim foi adicionar EnableCdn="true" em um ScriptManager como este:

<asp:ScriptManager ID="ScriptManager1" runat="server" EnableCdn="true" />

Veja o MSDN para mais informações.

Por que precisamos fazer isso?

Ao trabalhar em um aplicativo Web asp.net, você deve habilitar a CDN para que a Microsoft possa baixar a biblioteca Sys..

Provavelmente havia um script em sua página que estava usando a função Sys. A configuração EnableCdn="true" garantiria que a biblioteca Sys seja baixada antes de ser usada.

O que é CDN?

Uma citação de https://www.sitepoint.com/7-reasons-to-use-a-cdn/

A maioria das CDNs é usada para hospedar recursos estáticos, como imagens, vídeos, clipes de áudio, arquivos CSS e JavaScript. Você encontrará bibliotecas JavaScript comuns, shims HTML5, redefinições de CSS, fontes e outros ativos disponíveis em uma variedade de sistemas públicos e privados de CDN.

Google e Microsoft têm CDNs. Tudo que você precisa fazer é adicionar uma referência. Geralmente, as CDNs são adicionadas por meio de um recurso de script:

<script src="https://ajax.aspnetcdn.com/ajax/4.5.1/1/MicrosoftAjax.js" type="text/javascript"></script>

Depois de definir EnableCdn="true" e a Microsoft adicionará sua pequena referência CDN (como a acima) na página que baixa a biblioteca Sys.

Espero que ajude qualquer um que tenha encontrado o mesmo problema.

2
Hawkeye

Eu estava tendo esse mesmo problema e, depois de muita discussão, decidi tentar isolar o problema e simplesmente carregar o gerenciador de scripts em uma página vazia, que ainda resultava no mesmo erro. Tendo isolado o problema, descobri através de uma comparação do web.config do meu site com um novo site de teste (em funcionamento) que alterar <compilation debug="true"> para <compilation debug="false"> na seção system.web do meu web.config corrige o problema.

Eu também tive que remover a entrada <xhtmlConformance mode="Legacy"/> do system.web para fazer o painel de atualização funcionar corretamente. Clique aqui para obter uma descrição desse problema.

2
MadMax1138

No meu caso, o problema era que eu havia colocado o seguinte código para manter o cabeçalho da tabela gridview após postagem parcial:

    protected override void OnPreRenderComplete(EventArgs e)
    {
        if (grv.Rows.Count > 0)
        {
            grv.HeaderRow.TableSection = TableRowSection.TableHeader;
        }
    }

A remoção deste código interrompeu o problema.

1
Fernando Meneses Gomes

Resolvi esse problema criando uma solução asp.net ajax separada e copie e cole toda a configuração ajax do web.config para o projeto em funcionamento.

aqui está a configuração obrigatória que você deve definir no web.config

    <configuration>
<configSections>
    <sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
        <sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
            <section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="MachineToApplication"/>
</sectionGroup>

    </sectionGroup>
</configSections>
        <assemblies>

            <add Assembly="System.Web.Extensions,     Version=1.0.61025.0,       Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>

        </assemblies>
           </compilation>
        <httpHandlers>
        <remove verb="*" path="*.asmx"/>
        <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
        <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
        <add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false"/>
    </httpHandlers>
    <httpModules>
        <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
    </httpModules>
</system.web>
    <system.webServer>
    <validation validateIntegratedModeConfiguration="false"/>
    <modules>
        <add name="ScriptModule" preCondition="integratedMode" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
    </modules>
    <handlers>
        <remove name="WebServiceHandlerFactory-Integrated"/>
        <add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
        <add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
        <add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
    </handlers>
</system.webServer>
1
Zara_me

Eu tive o mesmo problema depois de atualizar meu AjaxControlToolkit.dll para a versão mais recente 4.1.7.725 de 4.1.60623.0. Pesquisei e cheguei a esta página, mas nenhuma das respostas me ajuda. Depois de olhar para o site de amostra do Ajax Control Toolkit que está no arquivo CodePlex Zip, percebi que o <asp:ScriptManager> foi substituído pelo novo <ajaxtoolkit:ToolkitScriptManager>. Eu fiz isso e não há Sys.Extended é indefinido mais.

1
Farschidus

Caso nenhuma das opções acima funcione para você e você substitua OnPreRenderComplete, ligue para base.OnPreRenderComplete. Meu terapeuta ficará feliz em me ver de volta

1
David Glass

No meu caso, encontrei um motivo muito oculto ... Havia uma rota de página com em Global.ascx.cs que não aparece nos meus testes nas subpastas, mas retorna a pergunta erro o tempo todo .. outro dia com problemas estranhos.

routes.MapPageRoute("siteDefault", "{culture}/", "~/default.aspx", false, new RouteValueDictionary(new { culture = "(\\w{2})|(\\w{2}-\\w{2})" }));
0
hsobhy

Mesmo depois de adicionar a entrada correta para a configuração da web, ainda está recebendo esse erro? O motivo mais comum para esse erro é o JavaScript que faz referência ao namespace do Sys muito cedo. A correção mais óbvia seria mover o bloco de script Java abaixo do controle ScriptManager:

0
Mahesh

Verifique se você não possui nenhuma regra de reescrita que altere seu URL.

No meu caso, o aplicativo achou que era apenas um nível mais profundo do que o URL atingido.

Exemplo: http://mysite.com/app/page.aspx era o URL real. Mas eu cortei/app/isso funcionou bem para o ASP.net e o WCF, mas claramente não para o Ajax.

0
Max

Adicionar, acrescentar

if (typeof(Sys) !== 'undefined') Sys.Application.notifyScriptLoaded(); 

Marque digite a descrição do link aqui

0
Jawad Siddiqui
  • Dev-Env: VS 2012
  • FX: 4.0/4.5
  • Implementações: Mestre (ScriptManager + UpdatePanel/Timer) + Conteúdo (UpdatePanel)
  • Padrões: PageRouting.

Aviso Legal:

Se todas as soluções web.config não funcionarem para você e você tiver implementado o PageRouting (IIS 7+), o snippet de código abaixo resolverá seus problemas.

Fundo:

Não quero dizer a Highjack esta pergunta, mas tivemos o mesmo problema que todos os outros e implementamos 100% das sugestões aqui, com pequenas modificações para .Net 4.0/4.5, e nenhuma delas funcionou para mim.

Na minha situação, eu tinha implementado roteamento de página que estava fantasma no meu problema. Basicamente, funcionaria por cerca de 20, mais ou menos, a depuração é executada e o BAM cometeria o erro Sys is undefined.

Depois de revisar algumas outras postagens, que começaram a falar sobre a lógica da URL limpa, lembrei-me de que havia feito as configurações do PageRouting.

Aqui está o recurso que eu usei para criar meus padrões: Page Routing

Meu código de uma linha corrigiu meu problema de depuração do VS2012:

rts.Ignore("{resource}.axd/{*pathInfo}")    'Ignores any Resource cache references, used heavily in AJAX interactions.
0
GoldBishop

Isso vai parecer estúpido, mas tive um problema semelhante com um site sendo desenvolvido no VS2010 e hospedado no VS Dev Server. A página em questão tinha um gerenciador de scripts para criar a conexão com um serviço wcf. Adicionei um método extra ao serviço e esse erro começou a aparecer.

O que o corrigiu foi mudar de 'Atribuir porta automaticamente' para 'Porta específica' com um número de porta diferente nas configurações da Web do oroject.

Eu gostaria de saber o porquê ...

0
Carl Onager

Estava com um problema semelhante, exceto que minha página gerava consistentemente o erro Sys é indefinido.

Para mim, o problema decorre do fato de eu ter acabado de instalar a extensão AJAX 1.0 para .NET 2.0, mas já ter criado meu projeto da web no Visual Studio.

Quando tentei criar AJAX controles que continuava encontrando esse erro, vi as postagens de Slace e MadMax1138s aqui. E achei que era meu web.config, criei um novo projeto usando o novo tipo de projeto "site habilitado para AJAX" e, com certeza, o web.config possui um grande número de personalizações necessárias para usar o AJAX controles.

Eu apenas atualizei o web.config com as atualizações do web.config que eu já havia feito e coloquei no meu projeto existente e tudo funcionou bem.

0
TygerKrash

Eu tive o mesmo problema, mas eu o corrigi por:

Ao colocar um arquivo de script em uma página, verifique se é

<script></script> and not <script />.

Segui o seguinte: http://forums.asp.net/t/1742435.aspx?An+element+with+id+form1+could+not+be+found+Script+error+on+page + carga

Espero que isso ajude

0
onlyme

Eu tenho visto exatamente o mesmo erro hoje, mas não foi um problema de configuração ou JavaScript direto.

Um projeto .net externo foi atualizado, mas as alterações não foram detectadas corretamente na compilação do site. Minha presunção é que o ASP.NET ajax não foi capaz de construir as representações de clientes dos objetos .NET corretamente e, portanto, estava carregando incorretamente.

Para resolver, reconstruí o (s) projeto (s) externo (s) e reconstruí a minha solução que estava com problemas. O problema foi embora.

0
gb2d

Eu tive problemas semelhantes e, para minha surpresa, o que descobri que um dos meus desenvolvedores salvou o web.config na mesma pasta/solução que web123.config e, por engano, esses dois arquivos foram carregados.

Assim que excluí o arquivo web123.config, esse erro desapareceu e o framework ajax estava carregando corretamente. mesmo que eu tenha

<compilation debug="true">

No meu caso, também tenho o seguinte segmento. Meu projeto está usando o framework 3.5

    <httpHandlers>
  <remove verb="*" path="*.asmx"/>
  <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
  <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
  <add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false"/>
</httpHandlers>
<httpModules>
  <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</httpModules>
</system.web>
0
v s

Não acho que esse ponto tenha sido acrescentado e, como passei algum tempo caçando isso, espero que possa ajudar.

Estou trabalhando com IIS 7 e usando o ASP.NET v4 Framework.
No meu caso, era importante que uma entrada seja adicionada à seção e da entrada no arquivo web.config.

Meu arquivo web.config possui muitos manipuladores e, no meu caso, foi mais fácil adicionar a entrada ScriptResources à parte superior da seção manipuladores. Mais importante, ele precisa ser colocado antes de qualquer entrada que atue como um curinga e capture a solicitação. A adição após uma entrada de curinga fará com que ela seja ignorada e o erro ainda aparecerá.

O módulo pode ser adicionado à parte superior ou inferior da seção.

Exemplo Web.config:

<system.webServer>
    <handlers>
      <clear />
      <add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
      <!-- Make sure wildcard rules are below the ScriptResource tag -->
    </handlers>
    <modules>
      <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
      <!-- Other modules are added here -->
    </modules>
  </system.webServer>
0
RacerNerd

Encontrei o erro ao usar uma combinação do Ajax Control Toolkit ToolkitScriptManager e URL Write 2.0.

No meu <rewrite> <outboundRules> eu tinha uma pré-condição:

<preConditions>
    <preCondition name="IsHTML">
        <add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html"/>
    </preCondition>
</preConditions>

Mas, aparentemente, algumas das minhas regras de saída não foram definidas para usar a pré-condição.

Uma vez, defini essa pré-condição em todas as minhas regras de saída:

<rule preCondition="IsHTML" name="MyOutboundRule">

Não há mais problema.

0
JonK

Por favor, verifique se o servidor tem a hora e a data corretas definidas ...

Depois de desperdiçar 6 horas, li em algum lugar ...

A data e hora do servidor devem ser atualizadas para funcionar corretamente ...

caso contrário, você receberá 'Sys' é um erro indefinido.

0
Arsalan