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

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

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

Это наводит меня на мысль, что это может быть настройка 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>
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
64
0
133 022
31

Ответы 31

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

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

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

James 17.09.2008 22:25

хорошо, у меня уже был диспетчер сценариев, но я заметил, что enablepartialrendering было установлено для меня как false, хотя установка его в true не решила мою проблему. FYI, у меня также есть комбинация скриптов, установленная в true.

James 20.09.2008 05:04

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

Zviadi 17.02.2012 22:57

Моя проблема заключалась в том, что мне совершенно не хватало ScriptManager. Его добавление устранило проблему.

NightShovel 30.04.2013 23:32

Для меня проблема заключалась в том, что мне нужен EnableCdn = "true" внутри диспетчера сценариев. Итак, <asp:ScriptManager ID = "ScriptManager1" runat = "server" EnableCdn = "true" /> Частичный рендеринг в моем случае не был проблемой.

Hawkeye 19.10.2017 02:58

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

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

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

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

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

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

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

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

Была аналогичная проблема, за исключением того, что моя страница постоянно генерировала ошибку Sys is undefined.

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

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

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

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

Итак, у меня такая же проблема. Разметка для включения ресурса сценария отсутствует, но в конце страницы отображается вызов Sys.Application.initialize();является. Это происходит только на одной странице из сотни в моем приложении, но я сам не выполняю никаких вызовов Sys. и не использую какие-либо элементы управления JavaScript или AJAX. есть идеи?

Cᴏʀʏ 14.07.2012 23:19

@Cory У меня такая же проблема, кажется, время от времени происходит сбой, но не всегда. Он отлично работает в среде разработки, на моей машине и на одном сервере, но не на «основном» производственном сервере.

Holger 31.07.2012 18:14

Когда я столкнулся с ошибками

  • 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>

Это сработало для меня, но нужна была только строка <add verb = "GET" ... для расширений .net 2.0 в HttpHandler, поскольку другие строки предназначены для 3.5

davidsleeps 22.11.2010 08:04

У меня не получилось. веб-страницу не удалось загрузить с добавленными выше строками. :(

Zeek2 17.10.2017 13:17

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

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

Для правильной работы необходимо обновить дату и время на сервере ...

в противном случае вы получите сообщение об ошибке «Sys» is undefined.

Просто создайте пустые файлы .axd в ваших решениях. Проблема с корневым каталогом будет решена. (2 файла: scriptresouce.asx, webresource.asxd)

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

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

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

Привет, большое спасибо, это решило мою проблему,

По умолчанию vs 2008 добавит

 <!--<add verb = "*" path = "*.asmx" validate = "false" type = "Microsoft.Web.Script.Services.ScriptHandlerFactory, Microsoft.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
      <add verb = "GET" path = "ScriptResource.axd" type = "Microsoft.Web.Handlers.ScriptResourceHandler" validate = "false" />-->

Необходимо исправить конфигурацию по умолчанию (вверху) на код ниже ИСПРАВИТЬ

 <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"/>

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

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

Я обнаружил ошибку при использовании комбинации 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">

Больше никаких проблем.

Я решил эту проблему, создав отдельное решение asp.net ajax, скопировав и вставив всю конфигурацию 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>

Раздел configSections мне не требовался в Framework 4.6, и при его добавлении я вызывал ошибку. В остальном все остальное выглядит хорошо по сравнению с AJAX Extensions web.config и моим. Для меня web.config не имел ничего общего с этой ошибкой Sys, хотя это была ссылка на JavaScript, которую я делал на странице слишком рано, до ее загрузки. Но это хорошая ссылка на тот случай, если у нас есть некоторые строки в нашем web.config, которые отсутствуют. :)

vapcguy 20.06.2016 22:48

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

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

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

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

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

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

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

Источник

Вы определенно получали случайную ошибку или всегда была ошибка?

Craig 19.07.2012 18:45

Где был размещен этот тег местоположения? Было бы неплохо включить его в сниппет.

Anders Lindén 07.03.2016 12:46

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

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

<compilation debug = "true">

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

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

Что исправило это для меня, так это изменение с «Автоматического назначения порта» на «Определенный порт» с другим номером порта в настройках oroject Web.

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

Вы говорили о порте веб-сайта или о порте для службы WCF? Но в любом случае вам придется определить его, чтобы он мог соединяться друг с другом, поэтому для меня это имеет смысл ...

vapcguy 20.06.2016 22:30

Среда разработки:

  • Dev-Env: VS 2012
  • FX: 4,0 / 4,5
  • Реализации: Мастер (ScriptManager + UpdatePanel / Timer) + Content (UpdatePanel)
  • Паттерны: PageRouting.

Заявление об ограничении ответственности:

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

Фон:

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

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

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

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

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

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

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

Я не думаю, что этот пункт был добавлен, и, поскольку я потратил некоторое время на поиски этого пункта, надеюсь, он может помочь. Я работаю с 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>

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

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

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

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

Вау, отлично! Только для меня я просто переместил его в конец страницы, чтобы он запускался последним. Идея о том, что Sys должен быть «готов» к вызову, мне не приходила в голову - думал, что OnRender должен был быть загружен до Page_Load. Выцарапал мне глаза на это! Спасибо! +1

vapcguy 20.06.2016 22:36

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

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

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

<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

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

Добавлять

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

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

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

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 Extensions \ 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

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

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

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

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

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

Я ненавижу добавлять в такую ​​огромную тему и многое позже, но я думаю, что у меня есть решение, которое работает, по крайней мере, в 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/

Most CDNs are used to host static resources such as images, videos, audio clips, CSS files and JavaScript. You’ll find common JavaScript libraries, HTML5 shims, CSS resets, fonts and other assets available on a variety of public and private CDN systems.

И у 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.

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

Хотя логическое мышление не должно быть причиной этого, в моем случае он «работает». Тем не менее, надеюсь, как можно скорее отказаться от этой древней и чрезмерно сложной технологии.

Saulius 04.12.2017 11:47

Я знаю, что это старый поток, но я нашел несколько уникальное решение. В моем случае я получал сообщение об ошибке, потому что я использую как Webforms, так и MVC в одном и том же веб-приложении ASP.NET. После сопоставления маршрутов проблема обнаружилась. Я исправил это, добавив следующий код для игнорирования маршрутов для "{resource} .aspx / {* pathInfo}" и "{resource} .axd / {* pathInfo}"

    private void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.aspx/{*pathInfo}");
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
           "Default", 
           "{controller}/{action}/{id}", 
           new { controller = "Test", action = "Index", id = UrlParameter.Optional }
       );
    }

Другие вопросы по теме