it-swarm-ru.tech

Sys не определено

У меня есть проект комплекта управления ASP.Net/AJAX, над которым я работаю. 80% времени нет проблем. Страница работает как надо. Если вы обновите страницу, иногда будет отображаться ошибка JavaScript "Sys не определен".

Это не происходит все время, но это воспроизводимо. Когда это происходит, пользователь должен закрыть свой браузер и снова открыть страницу.

Это заставляет меня поверить, что это может быть настройка IIS.

Еще одна заметка. Я посмотрел на исходный код страницы, когда я получаю ошибку, а когда нет. Когда страница выдает ошибки, отсутствует следующий код:

<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

Я исправил свою проблему, переместив блок <script type="text/javascript"></script>, содержащий вызовы Sys. *, Вниз (к последнему элементу перед закрытием раздела <asp:Content/> тела) в HTML-код на странице. У меня изначально был блок сценария в разделе HEAD <asp:Content/> моей страницы. Я работал внутри страницы с MasterPageFile. Надеюсь, это поможет кому-то.

53
Dean L

Когда я испытал ошибки

  • Sys не определено
  • Не удалось загрузить клиентскую среду ASP.NET Ajax

в IE при использовании элементов управления ASP.NET Ajax в .NET 2.0 мне нужно было добавить следующее в файл web.config в тегах <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

Ответ Дина Л, https://stackoverflow.com/a/1718513/29206 работал для меня, так как мой звонок в Sys также был слишком ранним. Поскольку я использую jQuery, вместо того, чтобы перемещать его, я помещаю скрипт в вызов document.ready:

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

Кажется, уже достаточно поздно, чтобы Sys был доступен.

8
goodeye

Попробуйте настроить ScriptManager на это.

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

Я использовал telerik и у меня была точно такая же проблема.

добавление этого в web.config решило мою проблему :)

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

может это тебе тоже поможет. это была проблема аутентификации.

Источник

6
Zviadi

Попробуйте одно из следующих решений:

1. Браузер не может загрузить сжатый скрипт

Обычно это происходит, если вы получаете ошибку в IE6, но не в других браузерах.

Обработчик ресурсов сценариев - ScriptResource.axd сжимает сценарии перед их возвратом в браузер. В версиях, предшествующих RTM, обработчик делал это все время для всех браузеров, и его нельзя было настроить. В одном из компонентов IE6 есть проблема, которая не позволяет корректно загружать сжатые сценарии. См. Статью базы знаний здесь . В сборках RTM мы сделали два исправления для этого. Во-первых, мы не сжимаем, если IE6 является клиентом браузера. Во-вторых, мы сделали сжатие настраиваемым. Вот как вы можете переключать web.config.

Как вы это исправите? Во-первых, убедитесь, что вы используете выпуск AJAX Extensions 1.0 RTM. Одного этого должно быть достаточно. Вы также можете попробовать отключить сжатие, отредактировав ваш web.config, чтобы получить следующее

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

2. Необходимая конфигурация для ScriptResourceHandler не существует для web.config для вашего приложения

Убедитесь, что ваш web.config содержит записи из файла web.config по умолчанию, предоставляемого при установке расширений. (расположение по умолчанию: C:\Program Files\Microsoft ASP.NET\ASP.NET 2.0 AJAX Расширения\v1.0.61025)

3. Виртуальный каталог, который вы используете для своей сети, неправильно помечен как приложение (поэтому конфигурация не загружается) - это может произойти для IIS веб-сайтов.

Убедитесь, что вы используете веб-приложение, а не просто виртуальный каталог

4. Запросы ScriptResource.axd возвращают 404

Это обычно указывает на неправильную настройку ASP.NET в целом. При установке по умолчанию ASP.NET любой веб-запрос к ресурсу, оканчивающемуся на .axd, передается из IIS в ASP.NET через сопоставление isapi. Кроме того, сопоставление настроено так, чтобы не проверять, существует ли файл. Если это сопоставление не существует или проверка наличия файла не отключена, то IIS попытается найти физический файл ScriptResource.axd, не найдет его и вернет 404.

Вы можете проверить, является ли это проблемой, скопировав/вставив полный URL-адрес в ScriptResource.axd отсюда и посмотрев, что он возвращает.

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

Как вы это исправите? Если ASP.NET не установлен должным образом, вы можете запустить средство командной строки aspnet_regiis.exe, чтобы исправить это. Он находится в C:\WINDOWS\Microsoft.Net\Framework\v2.0.50727. Вы можете запустить "aspnet_regiis -i -enable", который выполняет полную регистрацию ASP.NET с IIS и ​​гарантирует, что ISAPI включен в IIS6. Вы также можете запустить "aspnet_regiis -s w3svc/1/root/MyWebApp", чтобы исправить только регистрацию для вашего веб-приложения.

5. Устранение ошибки "Sys is undefined" в ASP.NET AJAX RTM в IIS 7

Поместите эту запись под <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" />

и удалите один под <system.web/><httpHandlers/>.

Ссылки: http://weblogs.asp.net/chrisri/demystifying-sys-is-undefinedhttp://geekswithblogs.net/lorint/archive/2007/03/28/ 110161.aspx

5
Alex N.

Вы должны добавить эти строки в 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>

Надеюсь это поможет.

5
Alcides Martínez

В дополнение к тому, что у вас есть ScriptManager на вашей странице, вы должны убедиться, что ваш web.config правильно настроен.

Когда был выпущен ASP.NET AJAX 1.0 (для .NET 2.0), было много пользовательских настроек web.config, которые добавляли обработчики, элементы управления и т.д.

Вы найдете информацию о конфигурации здесь: http://www.asp.net/AJAX/documentation/live/ConfiguringASPNETAJAX.aspx

4
Aaron Powell

Убедитесь, что в ваших клиентских скриптах, взаимодействующих с .NET AJAX, в конце указана следующая строка:

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

Это сообщает менеджеру сценариев, что весь файл сценария загружен и что он может начать вызывать клиентские методы.

3
Tom Carter

Я ненавижу добавлять к такой огромной теме и так много позже, но я думаю, что у меня есть решение, которое по крайней мере работает в VS2015.

Я пытался найти причину ошибки sys, и единственное решение, которое мне помогло, - это добавить EnableCdn="true" в ScriptManager, например так:

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

Смотрите MSDN для получения дополнительной информации.

Зачем нам это нужно?

При работе с веб-приложением asp.net необходимо включить CDN, чтобы Microsoft могла загрузить библиотеку Sys..

Вероятно, на вашей странице был скрипт, который использовал функцию Sys. Установка EnableCdn="true" обеспечит загрузку библиотеки Sys перед ее использованием.

Что такое CDN?

Цитата из https://www.sitepoint.com/7-reasons-to-use-a-cdn/

Большинство CDN используются для размещения статических ресурсов, таких как изображения, видео, аудиоклипы, файлы CSS и JavaScript. Вы найдете общие библиотеки JavaScript, графические элементы HTML5, сбросы CSS, шрифты и другие ресурсы, доступные в различных общедоступных и частных системах CDN.

И у Google, и у Microsoft есть CDN. Все, что вам нужно сделать, это добавить ссылку. Обычно CDN добавляются через ресурс скрипта:

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

Как только вы установите EnableCdn="true" и Microsoft добавит небольшую ссылку на CDN (как выше) на странице, которая загружает библиотеку Sys.

Я надеюсь, что это поможет любому, кто столкнулся с той же проблемой.

2
Hawkeye

У меня возникла та же проблема, и после долгих споров я решил попытаться изолировать проблему и просто загрузить диспетчер сценариев на пустой странице, которая все еще приводила к этой же ошибке. Выделив проблему, я обнаружил, сравнив файл web.config моего сайта с совершенно новым (рабочим) тестовым сайтом, который изменяет <compilation debug="true"> на <compilation debug="false"> в разделе system.web моего web.config и устраняет проблему.

Мне также пришлось удалить запись <xhtmlConformance mode="Legacy"/> из system.web, чтобы панель обновлений работала правильно. Нажмите здесь для описания этой проблемы.

2
MadMax1138

В моем случае проблема заключалась в том, что я поместил следующий код, чтобы сохранить заголовок таблицы gridview после частичной обратной передачи:

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

Удаление этого кода остановило проблему.

1
Fernando Meneses Gomes

Я решил эту проблему, создав отдельное ajax-решение asp.net, скопировав и вставив всю конфигурацию ajax из web.config в рабочий проект.

вот необходимая конфигурация, которую вы должны установить в 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

У меня была такая же проблема после обновления моего AjaxControlToolkit.dll до последней версии 4.1.7.725 с 4.1.60623.0. Я искал и зашел на эту страницу, но ни один из ответов мне не помог. Посмотрев пример веб-сайта Ajax Control Toolkit, который находится в файле CodePlex Zip, я понял, что <asp:ScriptManager> заменен новым <ajaxtoolkit:ToolkitScriptManager>. Я так и сделал, и нет Sys.Extended не определен больше.

1
Farschidus

В случае, если ничего из вышеперечисленного не работает для вас, и вы переопределяете OnPreRenderComplete, обязательно вызовите base.OnPreRenderComplete. Мой терапевт будет рад видеть меня снова

1
David Glass

В моем случае я нашел очень скрытую причину ... Был такой маршрут страницы с параметром Global.ascx.cs, который не отображается в моих тестах в подпапках, но возвращает вопрос ошибка все время .. другой день со странными проблемами.

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

Даже после добавления правильной записи для веб-конфигурации все еще появляется эта ошибка? Наиболее распространенной причиной этой ошибки является JavaScript, который слишком рано ссылается на пространство имен Sys. Тогда наиболее очевидным решением будет переместить блок сценария Java под элементом управления ScriptManager:

0
Mahesh

Убедитесь, что у вас нет правил перезаписи, которые меняют ваш URL.

В моем случае приложение считало, что это только на уровень выше, чем достигнут URL.

Пример: http://mysite.com/app/page.aspx был реальный URL. Но я отключил/app /, он отлично работал для ASP.net и WCF, но явно не для Ajax.

0
Max

Добавлять

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

Пожалуйста, проверьте введите описание ссылки здесь

0
Jawad Siddiqui
  • Dev-Env: VS 2012
  • FX: 4.0/4.5
  • Реализации: Мастер (ScriptManager + UpdatePanel/Timer) + Контент (UpdatePanel)
  • Шаблоны: PageRouting.

Отказ от ответственности:

Если все решения web.config не работают для вас, и вы внедрили PageRouting (IIS 7+), приведенный ниже фрагмент кода решит ваши проблемы.

Фон:

Не имею в виду Highjack этот вопрос, но имел ту же проблему, что и все остальные, и реализовал 100% предложений здесь, с небольшими изменениями для .Net 4.0/4.5, и ни одно из них не помогло мне.

В моей ситуации я реализовал Page Routing , которая привела меня к проблеме. В основном, это будет работать около 20, или около того, отладочные прогоны, а затем BAM выдаст ошибку с ошибкой Sys is undefined.

После просмотра пары других постов, в которых рассказывалось о логике Clean-URL, я вспомнил, что выполнил настройку PageRouting.

Вот ресурс, который я использовал для построения своих шаблонов: Page Routing

Мой однострочный код исправил мою проблему отладки VS2012:

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

Это будет звучать глупо, но у меня была похожая проблема с сайтом, разрабатываемым в VS2010 и размещенным на VS Dev Server. На рассматриваемой странице был скрипт-менеджер для создания соединения с сервисом wcf. Я добавил дополнительный метод к службе, и эта ошибка начала появляться.

То, что исправило это для меня, изменилось с "Автоматически назначить порт" на "Определенный порт" с другим номером порта в веб-настройках oroject.

Я хотел бы знать, почему ...

0
Carl Onager

Возникла похожая проблема, за исключением того, что на моей странице постоянно возникала ошибка Sys - неопределенная.

Для меня проблема заключается в том, что я только что установил расширение AJAX 1.0 для .NET 2.0, но уже создал свой веб-проект в Visual Studio.

Когда я пытался создать AJAX элементы управления, я продолжал сталкиваться с этой ошибкой, я заметил здесь сообщения Slace и MadMax1138s. И решил, что это мой web.config, я создал новый проект, используя новый тип проекта "AJAX-включен веб-сайт", и, конечно же, web.config имеет большое количество настроек, необходимых для использования AJAX управления.

Я только что обновил этот web.config обновлениями web.config, которые я уже сделал сам, и поместил в свой существующий проект, и все работало нормально.

0
TygerKrash

У меня была такая же проблема, но я исправил это:

При помещении файла скрипта на страницу убедитесь, что он

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

Я следил за этим: http://forums.asp.net/t/1742435.aspx?An+element+with+id+form1+could+not+be+found+Script+error+on+page + нагрузка

Надеюсь, это поможет

0
onlyme

Я видел ту же самую ошибку сегодня, но это не было проблемой конфигурации или прямой JavaScript.

Внешний проект .net был обновлен, но изменения не были собраны должным образом при компиляции веб-сайта. Я предполагаю, что ASP.NET ajax не смог правильно сконструировать клиентские представления объектов .NET и поэтому не смог правильно загрузиться.

Чтобы решить эту проблему, я перестроил внешний проект (ы) и перестроил свое решение, в котором возникли проблемы. Проблема ушла.

0
gb2d

У меня были похожие проблемы, и к моему удивлению я обнаружил, что один из моих разработчиков сохранил файл web.config в той же папке/решении, что и web123.config, и по ошибке оба этих файла были загружены.

Как только я удалил файл web123.config, эта ошибка исчезла, и платформа ajax загружалась правильно. хотя у меня есть

<compilation debug="true">

В моем случае у меня также есть следующий сегмент. Мой проект использует фреймворк 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

Я не думаю, что этот пункт был добавлен, и, поскольку я просто потратил некоторое время на поиски этого, я надеюсь, что это может помочь.

Я работаю с IIS 7 и использую ASP.NET v4 Framework.
В моем случае это было важно, чтобы запись была добавлена ​​как в раздел, так и в раздел в файле web.config.

Мой файл web.config имеет много обработчиков, и в моем случае было проще всего добавить запись ScriptResources в начало раздела обработчиков. Самое главное, его необходимо поместить перед любой записью, которая будет действовать как подстановочный знак и захватывать запрос. Добавление его после подстановочного знака приведет к его игнорированию и появлению ошибки.

Модуль можно добавить вверху или внизу раздела.

Пример 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

Я обнаружил ошибку при использовании комбинации Ajax Control Toolkit ToolkitScriptManager и URL Write 2.0.

В моем <rewrite> <outboundRules> у меня было предварительное условие:

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

Но, очевидно, некоторые из моих исходящих правил не были настроены на использование предварительного условия.

Однажды у меня было это предварительное условие для всех моих исходящих правил:

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

Нет больше проблем.

0
JonK

Пожалуйста, пожалуйста, убедитесь, что на сервере установлены правильные время и дата ...

После примерно 6 часов я читал это где-то ...

Дата и время для сервера должны быть обновлены для корректной работы ...

в противном случае вы получите 'Sys' - неопределенная ошибка.

0
Arsalan