1

ScriptManager 用に ASP.NET 3.5 SP1 で利用できる新しい CompositeScript 機能を使用しています。

これを ASP.NET 開発サーバーでテストすると正常に動作しますが、サイトを IIS Web サーバーに公開すると、結合されたファイルをダウンロードできず、常に次のエラーが発生します: 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">

誰もこの問題の解決策を知っていますか?

4

2 に答える 2

2

Martin が指摘した Omar と Moiz のアプローチの別のバリエーションは、Cristian がN2 CMS プロジェクトで採用したものです。

構成ファイルでスクリプトの各グループを記述する代わりに、グループごとに仮想サブフォルダーを作成するだけです。要求に応じて、特別な HTTP ハンドラーが行う必要があるのは、要求されたディレクトリを走査し、そこにあるすべてのファイルを処理することだけです。

于 2009-03-16T07:06:06.537 に答える
2

ScriptResource.axd へのリンクが無効だと思います。

私の知る限り、ScriptResource.axd に存在するクエリ文字列は、2 つのパラメーター (d と t) で構成されています。d パラメーターは、アセンブリ、該当する場合はバージョン番号、およびアセンブリに埋め込まれているリソース (つまり、javascript ファイル) の名前で構成される暗号化された文字列です。暗号化は、マシン キーに基づいています。t パラメーターは、アセンブリが更新された日付 (ティック単位) です。

Reflector を見て、System.Web アセンブリを見て、UI.Page を見ると、DecryptString というプライベート メソッドがあります。私は今のところWindowsを使用していませんが、DecryptStringを見てみると、最終的に「無効なビューステート」という例外が発生することがわかります。

複合スクリプトとスクリプトの結合を行うには、いくつかの方法があります。しかし、ScriptManager コントロール (AjaxToolKit にもあります) のどれもが、実際にこれに不満を持っているとは思いません。実際には、常にいくつかのスクリプトが外部に残されていることがわかります。

考慮すべきその他のリソースは次のとおりです。codeproject での Omar Al Zabir の投稿: http://www.codeproject.com/KB/aspnet/HttpCombine.aspxおよびhttp://www.codeproject.com/KB/aspnet/fastload。 aspx。Omar には、パフォーマンスに関する優れた本もあります。

また、codeproject では、Moiz Dhanji が少し異なるアプローチをとっています: http://www.codeproject.com/KB/aspnet/AspNetOptimizer.aspx。

于 2009-01-09T19:15:21.223 に答える