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

У меня есть ошибка Microsoft JScript во время выполнения: не удалось загрузить клиентскую среду ASP.NET Ajax. на пустой странице с помощью главной страницы

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">

    <div>

    </div>
    <asp:ScriptManager ID="ScriptManager1" runat="server" EnableCdn="True">
    </asp:ScriptManager>
    </form>
</body>
</html>

Это то, что он делает это конец

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>

</title></head>
<body>
    <form method="post" action="WebForm2.aspx" id="form1">
<div class="aspNetHidden">
<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />
<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUJNjE2OTgwNTY5ZGTfWA/dEX85PXBlbkKsVxeLKyIn+mJQ9piW5cbeNE+qww==" />
</div>

<script type="text/javascript"> 
//<![CDATA[
var theForm = document.forms['form1'];
if (!theForm) {
    theForm = document.form1;
}
function __doPostBack(eventTarget, eventArgument) {
    if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
        theForm.__EVENTTARGET.value = eventTarget;
        theForm.__EVENTARGUMENT.value = eventArgument;
        theForm.submit();
    }
}
//]]>
</script>


<script src="http://ajax.microsoft.com/ajax/4.0/2/WebForms.js" type="text/javascript"></script>


<script src="/ScriptResource.axd?d=6x_aX-LOcgUU-O_K6nM7ST5ViC_naT1e4_j-CY35ASRLpcKYpiapwTARuePHvx3llP-Xhl_AG_ubpM1BzkM5iyn9ThB3m7lmXKvkck0cxTcYiT-VbeKgamKxp9EwxBUyIQN6sSCU9SQm3tMtmzQWRg2&amp;t=ffffffffbad362a4" 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>

<script src="/ScriptResource.axd?d=khKEuZ4oUqBYvQxJ1ISpPVIW8_AWWc907q5_v74DI2ruWKTJpldq2osxPkAZ__hffe1Q6HTQUyTbL3Q1mD6MX7V65O5ibxKwb4NvN6ycdZ8vEJ-bz51MO-8uoaP2xioK6npm5n8vldI1d0sOCnH6yw2&amp;t=ffffffffbad362a4" type="text/javascript"></script>

    <div>

    </div>
    <script type="text/javascript"> 
//<![CDATA[
Sys.WebForms.PageRequestManager._initialize('ScriptManager1', 'form1', [], [], [], 90, '');
//]]>
</script>

    </form>
</body>
</html>

Проблемы могут заключаться в том, что раньше у меня был AjaxControlToolkit в моем проекте, но позже я вместо этого использую jquery. так что где-то в проекте можно попытаться добавить Ajaxcontroltoolkit, который я не могу найти. Я не знаю, как исправить эту ошибку. Я попытался добавить bin-файл ajaxcontroltoolkit обратно, но, похоже, не работает.

21 ответ

Решение

Sys undefined означает, что в ваш браузер не загружаются файлы на стороне клиента.

Решение 1:

<add verb="GET"
  path="ScriptResource.axd"
  type="Microsoft.Web.Handlers.ScriptResourceHandler"
  validate="false"/>

Решение 2: Если у вас нет этого, добавьте это тоже под <assemblies>

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

Решение 3. Если это тоже не сработает, попробуйте удалить файлы из папки "bin", пересобрать решение и очистить кеш браузера.

Решение 4. Добавьте это в ваш web.config

<location path="ScriptResource.axd">
   <system.web>
      <authorization>
         <allow users="*"/>
      </authorization>
   </system.web>
</location>

Это решение работает для меня:

Ошибка на клиенте была:

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

SCRIPT5009: "Sys" не определено

После долгих поисков веб-сайтов и новых решений я решил проблему:

Решение для.NET 4.0:

Установите для свойства EnableCdn диспетчера сценариев значение true, например:

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

Следующее решение и лучшее решение:

добавьте этот обработчик в ваш web.config

  <system.webServer>
    <handlers>
      <remove name="WebServiceHandlerFactory-Integrated"/>
      <remove name="ScriptHandlerFactory"/>
      <remove name="ScriptHandlerFactoryAppServices"/>
      <remove name="ScriptResource"/>
      <add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
      <add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=4.0.0.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=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
    </handlers>
  </system.webServer>

Для веб-ресурсов telerik используйте этот код:

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

Я включил маршрутизацию WebForms и забыл добавить исключение для ресурсов:

routes.Ignore("{resource}.axd/{*pathInfo}");

Другой возможной причиной является объединение / сжатие сценариев в IE 8 и 9. В файле web.config на верхнем уровне (в конфигурации) укажите

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

На ваш ToolKitScriptManager поместите CombineScripts=False, например

<asp:ToolkitScriptManager runat="server" CombineScripts="False">
</asp:ToolkitScriptManager>

см. http://robmzd.blogspot.com/2010/02/invalid-character-error.html где я решил проблему

У меня была эта проблема, когда я переместил свои формы на новый сервер. Я потратил часы, чтобы найти решение. Проблема заключалась в том, что на новом сервере был ASP.NET 4.0, а мой web.config был ASP.NET 3.5. Поэтому я сделал новый файл web.config, и теперь все в порядке.

Добавьте EnableScriptCombine="False" к вашему RadScriptManager следующим образом:

<telerik:RadScriptManager ID="RadScriptManager1" EnableScriptCombine="False" runat="server" />

Просто добавьте <handlers> раздел, как показано ниже в вашем web.config в <system.webServer> и это решит проблему в кратчайшие сроки.

<system.webServer>
.
.
.
<handlers>
  <remove name="WebServiceHandlerFactory-Integrated"/>
  <remove name="ScriptHandlerFactory"/>
  <remove name="ScriptHandlerFactoryAppServices"/>
  <remove name="ScriptResource"/>
  <add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
  <add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
  <add name="ScriptResource" verb="GET,HEAD" path="ScriptResource.axd" preCondition="integratedMode" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
</handlers>
</system.webServer>

Для меня это была проблема с кодом Global.asax,

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

Request.Path.ToUpper() != Constants.AliasName.ToUpper() + "SCRIPTRESOURCE.AXD"

Функциональный код показан ниже,

protected void Application_PreRequestHandlerExecute(Object sender, EventArgs e)
        {
            if ((Request.Path != Constants.DebugLoginUrl) &&
                (Request.Path != Constants.SessionTimeOut) &&
                (Request.Path.ToUpper() != Constants.AliasName.ToUpper() + "TRACE.AXD") && 
                (Request.Path.ToUpper() != Constants.AliasName.ToUpper() + "SCRIPTRESOURCE.AXD"))
            {
                // to prevent check of HTTP HANDLER FLUSH - Session State is Invalid
                if (HttpContext.Current.Session != null)
                {
                    if (Session[Constants.personId] == null)
                    {
                    //your code
                    }

                else
                {
                    Response.Redirect(Constants.SessionTimeOut);
                }
            }
        }

И вот еще одна причина. Я установил MySQL, Connector / net 6.9.5. Позже я начал получать страшные "sys undefined" для всех, но не для всех проектов в IE. Много, много часов спустя я попробовал Chrome и Opera, и первая страница открылась нормально, но после отправки все переменные сессии исчезли. Вот когда пенни наконец-то упала - Connector/net, должно быть, настроил сам провайдер состояния сеанса, но у меня не было ничего для состояния сеанса в web.config для неудачных проектов. Sessionstate inproc исправил это немедленно. По крайней мере, я так думаю...

После добавления ссылки System.Web.MVC на мой ASP.NET и добавления маршрута по умолчанию в global.asax, т.е.

RouteTable.Routes.MapRoute("Default", "{controller}/{action}/{id}",
                                       new { controller = "new", action = "Index", id = "" });
        }

Начал получать ошибку

Добавлена ​​строка ниже в global.asax.cs для ее разрешения

  RouteTable.Routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

В моем случае ошибка загрузки Ajax произошла только в том случае, если я перезагрузил страницу, а не при первой загрузке страницы.

Просматривая содержимое тега в Site.Master, я заметил, что только для некоторых элементов был установлен атрибут Path. Итак, я обновил MsAjaxBundle к этому: и проблема ушла. Мне также пришлось изменить WebFormsBundle таким же образом, и теперь перезагрузка страницы работает.

Что мне помогло, так это скачать ASP.NET Ajax от Microsoft.

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

C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\System.Web.Extensions.dll

Для меня веб-конфиг был верным. если веб-конфиг правильный, то Проверьте свои IIS App pool настройки в моем случае App pool pipeline был выбран как классический, я сделал трубопровод интегрированным, и он начал работать.

Перейдите в iis -> щелкните правой кнопкой мыши пул приложений -> Дополнительные параметры -> Управляемый конвейерный режим -> "Интегрированный" -> ОК.

Для всех, кто работает с шаблоном проекта веб-приложения ASP.NET 4.5 для Visual Studio 2015, который включает в себя сценарии ASP.NET AJAX:

/questions/21259438/aspnet-forms-authentication-oshibki-javascript-na-stranitse-vhoda-pri-poseschenii-anonimnyimi-polzovatelyami/21259465#21259465

Попробуйте изменить в web.config компиляцию на false:

<compilation debug="false" targetFramework="4.5">

Я использую проект веб-приложения Visual Studio 2015 ASP.NET 4.5 Web Forms, и, вероятно, неправильный маршрут в контроллере API также приведет к этой ошибке. Я исправил маршрут и ошибка ушла. Конечно, было бы неплохо для более информативного сообщения об ошибке относительно того, почему клиентская среда не загружается. Я потратил часы на проверку настроек web.config, очистку временных каталогов.net, проверку global.ascx и т. Д. Странно то, что, пока IE 11 не работал при загрузке default.aspx, chrome смог загрузить default.aspx и веб-сайт.,

Если ни один из этих ответов не работает для вас, возможно, вы находитесь в моей ситуации. Итак, для меня проблема была вызвана тем, что срок действия сертификата ssl истекает сегодня, поэтому после того, как я обновил его, эти ошибки исчезли.

Ну я просто изменил RadScriptManger на Simple asp:ScriptManager, и он работает

До:

<telerik:RadScriptManager ID="RadScriptManager1" EnableCdn="true" runat="server" />

После

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

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

Я установил пул приложений как ASP.NET 4.0 Classic во время установки.

В моем случае, я закончил с упомянутыми обработчиками в <httpHandlers> а также в <handlers>, Удаление <httpHandlers> раздел исправил это.

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