Как включить множество файлов Javascript, используя композитный скрипт ToolkitScriptManager? - PullRequest
3 голосов
/ 31 июля 2010

Если у вас слишком много javascript-файлов, включенных в композитный скрипт в диспетчере скриптов, вы получите эту ошибку ...

"URL ресурса не может быть длиннее 1024 символов. При использовании CompositeScriptReference уменьшите число содержащихся в нем ScriptReferences или объедините их в один статический файл и задайте для свойства Path его местоположение."

Я знаю, как это исправить, используя плоскость старого asp: scriptmanager (используйте прокси-сервер диспетчера сценариев). Но как я могу это исправить с помощью ToolkitScriptManager?

<ajaxToolkit:ToolkitScriptManager ID="GeneralScriptManager" CombineScripts="true" CombineScriptsHandlerUrl="Utility/CombineScriptsHandler.ashx" runat="server" AsyncPostBackTimeout="480" EnablePageMethods="true">
    <CompositeScript>
        <Scripts>
            <asp:ScriptReference Path="JavaScript/jQuery/jquery-1.4.1.min.js" />
            ... A whole lot more script references here
        </Scripts>
    </CompositeScript>
</ajaxToolkit:ToolkitScriptManager>

Обновление Я попытался сделать это с помощью объединителя сценариев, включенного в пример приложения. Я думаю, что это правильно, но я уже много раз ошибался ... Хотя не повезло.

Еще одно обновление Итак, я подумал, что, возможно, если бы я включил несколько блоков CompositeScript в один ToolkitScriptManager, он мог бы создать их все как отдельные файлы. Нету. Тем не менее получить ту же ошибку. Ни у кого нет идей? Когда я Google "toolkitscriptmanager не может быть длиннее 1024 символов", этот вопрос StackOverflow является результатом номер 1 ...

Ответы [ 2 ]

2 голосов
/ 04 августа 2010

Документация MSDN по этому вопросу на самом деле довольно хорошая:

Количество ссылок на сценарии, которые может содержать экземпляр CompositeScriptReference, ограничено размером результирующего URL-адреса.URL не может быть длиннее 1024 символов.

Если вам нужно обойти это ограничение, у вас есть два варианта.Первый вариант - уменьшить количество объектов ScriptReference, содержащихся в составном скрипте.Второй вариант - вручную объединить сценарии в один статический файл.В этом случае вы можете установить в свойстве Path расположение статического файла.

Если вы хотите объединить несколько физических файлов, вы поступите неправильно, см.ссылка ниже [1]:

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

То, что я хотел бы найти, это задача после сборки, которая объединяет ваши статические * .jsфайлы, что-то вроде [2].

Удачи.

[1] - http://weblogs.asp.net/bleroy/archive/2008/06/12/script-reference-profiler.aspx

[2] - http://encosia.com/2009/05/20/automatically-minify-and-combine-javascript-in-visual-studio/

1 голос
/ 07 августа 2010

Я использую Chirpy вместо ToolkitScriptManager.Это легко настроить, делает JS и CSS файлы.Он может использовать YUI-Compressor или Google Cloture под крышками.

Также позволяет использовать lesscss , что потрясающе.

...