2009-01-09 2 views
1

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

Когда я тестирую это с помощью ASP.NET Development Server, он отлично работает, но когда я публикую сайт на своем веб-сервере IIS, комбинированные файлы не могут быть загружены, я всегда получаю следующую ошибку: Недействительный 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"> 

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

ответ

2

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

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

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

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

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

Также на CodeProject, Моиз Dhanji имеет несколько иной подход: http://www.codeproject.com/KB/aspnet/AspNetOptimizer.aspx.

2

Другой вариант Омара и подходов Моиз, в указываемого Мартин, является одним нанят Cristian в его N2 CMS project.

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

Смежные вопросы