Pergunta

Eu estou usando o novo recurso CompositeScript que está disponível no ASP.NET 3.5 SP1 para o ScriptManager.

Quando eu testar isso com o servidor de desenvolvimento ASP.NET funciona bem, mas quando eu publicar o site para o meu IIS servidor web os arquivos combinados não pode ser baixado, eu sempre obter o seguinte erro:. Inválido ViewState

O querystring que é adicionado à ScripResourceHandler é bastante longo (causa ??):

<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">

Alguém sabe uma solução para este problema?

Foi útil?

Solução

Eu acho que o link para ScriptResource.axd é inválido.

AFAIK, a querystring que está presente em ScriptResource.axd é constituído por dois parâmetros (d e t). O d paramater é uma cadeia encriptada que faz parte do conjunto, o número da versão, se aplicável, e o nome do recurso (isto é, arquivo JavaScript) que está incorporado no referido conjunto. A criptografia é baseada na chave de máquina. O parâmetro t é a data em que a montagem foi atualizado (em carrapatos).

Se você tem um olhar para Refletor e ter um olhar para o System.Web montagem e olhada UI.Page existe um método particular chamado DecryptString. Eu não estou no Windows no mo, mas se você olhar para baixo DecryptString você verá que, eventualmente, você vai ter uma exceção "viewstate inválido".

Existem algumas maneiras diferentes de fazer Scripts Composite e roteiro combinando. Mas eu não acho que qualquer um dos controles ScriptManager (ajaxToolkit tem um também) têm realmente tenho essa pat para baixo. Na prática, eu acho que você está sempre deixou com um scripts de poucos fora.

Um par de outros recursos a considerar são: mensagens de Omar Al Zabir em codeproject: http : //www.codeproject.com/KB/aspnet/HttpCombine.aspx e http://www.codeproject.com/KB/aspnet/fastload.aspx . Omar também tem um bom livro que o desempenho tampas.

Também no codeproject, Moiz Dhanji tem uma abordagem um pouco diferente: http: // www .codeproject.com / KB / aspnet / AspNetOptimizer.aspx.

Outras dicas

Outra variação de Omar e abordagens de Moiz, apontado por Martin, é um empregado por Cristian na sua N2 CMS projeto .

A idéia é que em vez de descrever cada grupo de scripts em um arquivo de configuração, um apenas cria uma sub-pasta virtual para cada grupo. Que, a pedido, de tudo um especial HTTP manipulador tem a fazer é atravessar diretório solicitado e processar todos os arquivos encontrados lá.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top