Вопрос

Я использую новую функцию CompositeScript, которая доступна в ASP.NET 3.5 SP1 для ScriptManager.

Когда я проверяю это на сервере разработки ASP.NET, он работает нормально, но когда я публикую сайт на своем веб-сервере IIS, объединенные файлы не могут быть загружены, я всегда получаю следующую ошибку: Invalid ViewState.

Строка запроса, добавляемая в ScripResourceHandler, довольно длинная (причина ??):

<script type="text/javascript" src="/ScriptResource.axd?d=8PM7kHuMMquT4Ta6cvC_2JLE_mKmYLeDWgV9z71Ryu5-7LRuy1v7MkEzM-M-NoE92QPDzXGBBSohhGbO17FKHqTZ9xMJx_5WaNrJTiwoFF28dlc6k02jRhN73u_Ohv7CKe-QPUdCOnzsBblNlopier7Ijd66Jp6Z0voAkZp36RzWYd64G9SOBCUs1HTu7oRQJTOlWyAd26O2r3S7Js7VX1YddtK-zO7DHa272a5-BitDkKTubnMPlwyYnW0Cn7TVK7NCjyF_o1E6wgPWY4THH56YNMtyRKeTrGFzMjTkiOmv18i2ePMHErlWYBXiL0If47bfPbNtfIeAMQAT8xX_DMBN6VR74GDlJSXQpFcGadNsKocZ4EOonDLykWf6Oq4ISr54_c-k_zzma5f6qFk1fXx8n8Vphe_QL67R-7aDlwBH9CrK-IBsuYDDeMSlTMWAZ6TRIhZSAyVANvh2VPZ8eBmGD0BpVA7D8e2vA1l6_kbC7w6CmGCEok-Cb1dqQPjgwB6Ho199M3IWrdwbUkN2leiDXn9bkZMGWA75IyjYiDisAz97JyA9AtDolhYGbxJ_AVrIpNpZFOQBZsXBkLfoo7iZmzHLwG7HNPhodtaekPAcxiKgi7Xf62DEnb20VRYMCFH8Qzfx5u4nlzZo4n7ZMkxDpWPlB65LCeCtvC6ZIl1kbq9FJ9dlf_DAkNU3-KKy__87Tzz9RWx6ucLXRGuljodLjiT8wrWRET_CpCspnHqpByBxEXiOi1_jW0e6_GjfZ9Fqk9GIXsSoTvnZmz_J68d28rSafQVKO1O06AjHCCBd7wh5mY-ISSLFaZ0pPszjdgVYxnC83ujaY9SWmRxUb_lPT4VdYG1Q02iyRO2l7BIDO-NiF77V_kklBhQRZ5ZiT3Vbf-JL6EZISThBJuh3WA2">

Кто-нибудь знает решение этой проблемы?

Это было полезно?

Решение

Я думаю, что ссылка на ScriptResource.axd недействительна.

AFAIK, строка запроса, которая присутствует в ScriptResource.axd, состоит из двух параметров (d и t). Параметр d представляет собой зашифрованную строку, которая содержит сборку, номер версии, если это применимо, и имя ресурса (то есть файла javascript), который встроен в указанную сборку. Шифрование основано на ключе машины. Параметр t - это дата обновления сборки (в тиках).

Если вы посмотрите на Reflector и посмотрите на сборку System.Web и посмотрите на UI.Page, то есть частный метод DecryptString. Сейчас я не на Windows, но если вы посмотрите на DecryptString, вы увидите, что в итоге вы получите исключение " Неверное представление состояния " ;.

Существует несколько различных способов создания составных сценариев и объединения сценариев. Но я не думаю, что какой-либо из элементов управления ScriptManager (у AjaxToolKit тоже есть) действительно справился с этой задачей. На практике я обнаружил, что у вас всегда есть несколько сценариев снаружи.

Несколько других ресурсов, которые следует рассмотреть: посты Омара Аль Забира в codeproject: http : //www.codeproject.com/KB/aspnet/HttpCombine.aspx и http://www.codeproject.com/KB/aspnet/fastload.aspx . У Омара также есть хорошая книга, в которой рассказывается о производительности.

Также в кодпроекте Моиз Дханджи использует немного другой подход: http: // www .codeproject.com / KB / САШ / AspNetOptimizer.aspx.

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

Другой вариант подходов Омара и Моиза, на который указал Мартин, - это вариант, использованный Кристианом в его Проект N2 CMS .

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top