Не удалось загрузить клиентскую среду 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&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&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:
Попробуйте изменить в 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>
раздел исправил это.