0

.NET 3.5 WebForms サイトで、エラー ログが次のエラー メッセージでいっぱいになることがあるという問題が発生しています。

「同じ ID 'ctl09' を持つ複数のコントロールが見つかりました。FindControl では、コントロールに一意の ID が必要です。」

ローカルでデバッグしているときに例外を見たことがなく、リモートデバッグセッションを実行するのに十分な時間でエラーログにキャッチしたことがないため、例外についてはほとんど知りません。アプリケーション プールのリサイクルによって問題が解決されることは知っています。

これは、サイト内の 1 つの [高トラフィック] ページにのみ影響します。奇妙なことに、このサイトでは 4.0 より前の ID 生成ロジックが使用されています。そのため、ページが機能している場合、ビュー ソース全体に、自動生成されたコントロール ID プレフィックスの後に「実際の」ID (ctl09_someID_someOtherID) が続く html 要素はありません。

2 つの主な質問ですが、アイデアは大歓迎です。

  1. コントロールがランダムに正しく構築されなくなった場合はどうなりますか?
  2. Global.asax 以外に、このエラーをトラップしてコントロールを強制的に再コンパイルするにはどうすればよいですか? アプリプールをリサイクルしますか?

私はかなり困惑しています。

4

1 に答える 1

0
  1. 私が知る限り、ページのライフサイクルまたはAJAXポストバックに干渉する外部エンティティのみがこれを引き起こす可能性があります。各コントロールが生成されている場合、IDの重複が「ランダムに」発生することはありません。

  2. これは実行可能なオプションではないと思います。アプリ プールのリサイクルですか? いやいや、これには正当な理由があるはずです。

おそらく、さらに情報/コードが役立つでしょうか?特定のページですか?ViewState を使用していますか? 「危険な」コントロール ID には多くの理由があります。

于 2010-05-26T15:05:37.767 に答える