alexvw Ответов: 1

Как избавиться от нежелательных тегов скриптов


Привет,

В наши веб-формы вставляются три нежелательных тега и теги сценариев:

Loading failed for the <script> with source “https://localhost:44304/Scripts/WebForms/MsAjax/MicrosoftAjax.js”.
Loading failed for the <script> with source “https://localhost:44304/Scripts/WebForms/MsAjax/MicrosoftAjaxWebForms.js”.
Loading failed for the <script> with source “https://localhost:44304/Scripts/jquery-3.3.1.js”.

Я не смог выяснить, где они генерируются.

Сайт действительно использует как jquery, так и MsAjax, но они включаются/ссылаются в пакет (BundleConfig.cs):
bundles.Add(new ScriptBundle("~/bundles/MsAjaxJs").Include(
    "~/Recursos/Scripts/WebForms/MsAjax/MicrosoftAjax.js",
    "~/Recursos/Scripts/WebForms/MsAjax/MicrosoftAjaxApplicationServices.js",
    "~/Recursos/Scripts/WebForms/MsAjax/MicrosoftAjaxTimer.js",
    "~/Recursos/Scripts/WebForms/MsAjax/MicrosoftAjaxWebForms.js"));

bundles.Add(new ScriptBundle("~/bundles/jQuery").Include(
    "~/Recursos/Scripts/jquery-3.3.1.min.js"
    , "~/Recursos/Scripts/jquery-ui-1.12.1.js"
    ));

Вот наш Global.asax (выдержка):
protected void Application_Start(object sender, EventArgs e)
        {
            BundleConfig.RegisterBundles(BundleTable.Bundles);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
        }

А вот и наша главная страница (выписка):
<asp:PlaceHolder runat="server">
    <%: Scripts.Render("~/bundles/MsAjaxJs") %>
    <%: Scripts.Render("~/bundles/jQuery") %>
</asp:PlaceHolder>

Как вы можете видеть, фактический путь в нашем проекте для указанных файлов на самом деле:
"~/Recursos/Scripts/jquery-3.3.1.min.js"
и
"~/Ресурсов/Скриптов/Форм/..."

Кроме того, указанные пакеты загружаются правильно:
Status 200 OK https://localhost:44304/bundles/MsAjaxJs?v=J4joXQqg80Lks57qbGfUAfRLic3bXKGafmR6wE4CFtc1
Status 200 OK https://localhost:44304/bundles/jQuery?v=2zGDWE11e8d2S6KhU5f00BBoMAWCqoXDrlwpjBbHHsE1


Что я уже пробовал:

Попытался найти, но безрезультатно, любую другую ссылку в нашем коде, указывающую на упомянутые сборки.

Ваше руководство очень ценится.

Спасибо.

Обновление: (20180508 17:15)
Я только что обнаружил, откуда берутся эти ссылки; они добавляются объектом ScriptManager. Они находятся в его определениях ScriptResourceMapping по умолчанию.

Я все еще игнорирую, почему мы получаем это "поведение" в этом проекте, а не в других, которые также реализуют ScriptManager.

Я успешно модифицировал два пути отладки определения MicrosoftAjax..., но при работе с jquery я получаю сообщение "Webform UnobtrusiveValidationMode", которое я буду продолжать пытаться выяснить.

1 Ответов

Рейтинг:
9

alexvw

Хорошо, я опубликую то, что мне удалось сделать, на случай, если это поможет кому-то еще. Но имейте в виду, что все это пахнет скорее обходным путем, чем реальным решением.

1-е место сначала:
Эти "нежелательные" теги были написаны объектом ScriptManager, реализованным на нашей главной странице.

Они не загружались по умолчанию, потому что мы решили переместить наши скрипты, css и другие ресурсы в нестандартную папку; вероятно, поэтому другие проекты не представляют указанной проблемы.

2-й Глобальный.asax:
В методе Application_Start мы отредактировали определения ScriptResourceMapping ScriptManager по умолчанию, чтобы указать указанные объекты на наш пользовательский путь к ресурсу:

        protected void Application_Start(object sender, EventArgs e)
        {
            ScriptManager.ScriptResourceMapping.GetDefinition("jquery").DebugPath = "~/Recursos/Scripts/jquery-3.3.1.js";

ScriptManager.ScriptResourceMapping.GetDefinition("MicrosoftAjax.js").DebugPath = "~/Recursos/Scripts/Webforms/MSAjax/MicrosoftAjax.js";

ScriptManager.ScriptResourceMapping.GetDefinition("MicrosoftAjaxWebForms.js").DebugPath = "~/Recursos/Scripts/Webforms/MSAjax/MicrosoftAjaxWebForms.js";

            BundleConfig.RegisterBundles(BundleTable.Bundles);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
        }


Наконец, Веб.конфиг:
Чтобы решить проблему "WebForms UnobtrusiveValidationMode", и как видно здесь, мы добавили следующую запись в файл web.config:
<appSettings>
      <add key="ValidationSettings:UnobtrusiveValidationMode" value="None" />
    </appSettings>


Теперь мы можем запускать наше веб-приложение без нежелательных "отсутствующих файлов" или проблем с jquery.

Ваше здоровье!