2

最近、Web アプリケーションで次のエラーが発生しました。

ページ 'ControlName.ascx' は、ユーザー コントロール 'OtherControl.ascx' を使用できません。これは、web.config に登録されており、ページと同じディレクトリにあるためです。

コントロールを移動してページに登録することでエラーを修正できましたが、なぜこれがエラーを発生させるのか知りたいです。

これは、ここで説明されているように設計どおりに設計されているようです(黄色のブロックで 3/4 ダウン) が、私の質問はなぜですか? Web.Configコントロールを に登録して同じディレクトリに配置すると、どのような問題に直面する可能性がありますか?

4

1 に答える 1

2

多分それは動的コンパイルの問題です。デフォルトでは、web.config の「コンパイル」要素の「バッチ」属性は true です。このようなもの :

<compilation defaultLanguage="c#" debug="false" batch="true" targetFramework="4.0" />

batch="true" を使用すると、コントロールをディレクトリでコンパイルする必要があるときはいつでも、サーバーはディレクトリ内のすべてのコントロール (すべて?) をコンパイルします。

web.config で宣言されたコントロールは、他のコントロールと同じようにコンパイルされていないと思います (別の dll、別のディレクトリで?)。したがって、web.config で宣言されたコントロールと他のコントロールを同じディレクトリに混在させると、一部が他のコントロールを参照すると、重複したコンパイルと dll の競合。

于 2012-04-18T15:34:00.047 に答える