0

私は本当にこれをどこから始めるべきか分かりません。私は得ています:

`Failed to load viewstate.  The control tree into which viewstate is being loaded must match the control tree that was used to save viewstate during the previous request.  For example, when adding controls dynamically, the controls added during a post-back must match the type and position of the controls added during the initial request.`

ウェブサイトを新しいサーバーに移動した後。私の他のサーバーでもまったく同じコードが機能します。フォームの 1 つを送信すると発生します (ただし、すべてのフォーム送信で発生するわけではありません)。

これを引き起こす可能性のあるアイデアはありますか?

使用: ASP.NET 2。

編集:実行時にいくつかのユーザーコントロールをプレースホルダーに動的に追加していますが、この同じコードは他のサーバーで正常に動作しています。新しいものを追加する前に、プレースホルダーのコントロールをクリアしようとしましたが (それについての投稿を見たので)、役に立ちませんでした。

EDIT2:ポストバックが失敗しているようです。ボタンのonClickコードにも入っていないので、何かが間違いなく厄介です..例外を試してキャッチすると、すべてのコントロールがまだ正常に追加されているようです...動的UCをEnableViewState = falseに設定すると、これが解決します特定のエラー。

EDIT3: OK、私は何が起こっているのかを把握していると思います. 何らかの理由で、古いサーバーではフォーム アクションが表示されdefault.aspx?action=amendますが、新しいサーバーでは表示amend.html?action=amendされているため、IIS で書き換えモジュールが台無しになっていると思います。これは、アクションが2回発生しているため、コントロールの追加の問題も説明します(私は思います)。Rewrite モジュールを調べて、何か問題があるかどうかを確認してから、返信します。

4

2 に答える 2

1

これらの記事をご覧ください。

http://blog.typps.com/2008/01/failed-to-load-viewstate-typ..html

http://weblogs.asp.net/guys/archive/2004/12/05/275321.aspx

または、単純な一時的な解決策を試してください - このプレースホルダーのビューステートを無効にします。いずれにせよ、最初のサーバーで実際に機能する理由がわかりません。他の誰かがこの主題をより明確にすることができれば幸いです。

于 2012-04-04T09:48:33.087 に答える
0

このサーバーでは、フォームのポストバックURLが間違っていることがわかりました(理由はわかりませんが、現時点で更新します)。これにより、動的コントロールが予期しない方法で追加され、エラーが発生します。フォームを投稿できたのにコンテンツが更新されなかったときに、これに気づきました。firebugを使用してアクションURLを手動で調整しましたが、すべて問題ありません。

ただし、動的制御とビューステートに関するwaltherの回答を確認する価値はあります。

原因はわかりませんが、ページの読み込みでフォームアクションを手動で設定しているので、問題は解決したようです。

于 2012-04-04T10:35:30.897 に答える