Sys не определено - PullRequest
       116

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

60 голосов
/ 16 сентября 2008

У меня есть проект комплекта управления 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>

Ответы [ 30 ]

2 голосов
/ 11 февраля 2009

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

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

1 голос
/ 18 августа 2013

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

1 голос
/ 29 мая 2013

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

1 голос
/ 09 июня 2011

Я решил эту проблему, создав отдельное 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 голос
/ 21 сентября 2016

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

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

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

0 голосов
/ 07 мая 2015

Добавить

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

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

0 голосов
/ 10 марта 2015

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

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

<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+load

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

0 голосов
/ 07 мая 2010

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

После того, как я потратил 6 часов, я где-то читал ...

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

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

0 голосов
/ 19 апреля 2013

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

Я работаю с 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 голосов
/ 14 февраля 2013

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

...