asp.net Web サイトの共有コード フォルダー
Web アプリケーションに複数のページ間で共有したいコードが含まれている場合は、Web アプリケーション Clamped のルート ディレクトリにある 2 つの特別なフォルダー (Bin フォルダーと App_Code フォルダー) 内のファイルにコードを保存できます。これらのフォルダーを作成し、特定の種類のファイルをフォルダーに保存すると、ASP.NET はそれらのファイルを特別な方法で処理します。
Bin フォルダー コンパイルされたアセンブリを Bin フォルダーに保存すると、Web アプリケーション内の他のコード (ページ コードなど) が自動的にフォルダーを参照します。典型的な例は、カスタム クラスのコンパイルされたコードです。コンパイルされたアセンブリを Web アプリケーションの Bin フォルダーにコピーすると、すべてのページがこのクラスを使用できるようになります。
Bin フォルダー内のアセンブリを登録する必要はありません。 .dll ファイルが Bin フォルダーに存在する限り、ASP.NET はそれを認識します。 .dll ファイルを変更し、その新しいバージョンを Bin フォルダーに書き込むと、ASP.NET は更新を検出し、後続の新しいページ要求に新しいバージョンの .dll ファイルを使用します。
Bin フォルダーのセキュリティ Bin フォルダーにコンパイル済みアセンブリを配置すると、セキュリティ リスクが生じます。自分でコードを書いてコンパイルした場合は、そのコードが何をするかがわかります。ただし、Bin フォルダー内のコンパイルされたコードは、他の実行可能コードと同様に扱う必要があります。コンパイルされたコードをテストして、その機能を理解していると確信するまでは、コンパイルされたコードには注意してください。
コンパイルされたコードを Bin フォルダーに配置するかどうかに関連する次のセキュリティ面に注意してください。
Bin フォルダー内のアセンブリは、現在のアプリケーションにスコープされます。したがって、現在の Web アプリケーションの外部のリソースにアクセスしたり、現在の Web アプリケーションの外部のコードを呼び出したりすることはできません。
実行時、アセンブリのアクセス レベルは、ローカル コンピューターで指定された信頼レベルによって決まります。詳細については、「ASP.NET の信頼レベルとポリシー ファイル」を参照してください。
Visual Studio などのデザイナーを使用している場合、Bin フォルダー内のコードは、実行時とは異なるコンテキストで実行されます。たとえば、コードは完全な信頼で実行される可能性があります。
App_Code フォルダー App_Code フォルダーにソース コードを保存でき、実行時に自動的にコンパイルされます。 Web アプリケーション内の他のコードは、結果として得られるアセンブリにアクセスできます。したがって、App_Code フォルダーは、コンパイルされたコードの代わりにソース コードを保存できる点を除けば、Bin フォルダーとほぼ同じように機能します。 App_Code フォルダーと ASP.NET Web アプリケーション内のその特別な場所を使用すると、カスタム クラスやその他のソース コードのみのファイルを作成し、それらを個別にコンパイルすることなく Web アプリケーションで使用できます。
App_Code フォルダーには、従来のクラス ファイル (つまり、.vb、.cs などの拡張子を持つファイル) の形式で記述されたソース コード ファイルを含めることができます。ただし、特定のプログラミング言語で書かれたようには見えないファイルが含まれる場合もあります。例には、.wsdl (Web サービス記述言語) ファイルや xml スキーマ (.xsd) ファイルが含まれます。 ASP.NET は、これらのファイルをアセンブリにコンパイルできます。
App_Code フォルダーには、必要な数のファイルとサブフォルダーを含めることができます。ソース コードは任意の方法で整理でき、ASP.NET はすべてのコードを 1 つのアセンブリにコンパイルし、そのアセンブリには Web アプリケーション内のどこにある他のコードからもアクセスできます。
知らせ
ユーザー コントロールは App_Code フォルダーでは許可されません。これには、単一ファイルのユーザー コントロールと分離コード モデルを使用するユーザー コントロールが含まれます。ユーザー コントロールを App_Code ディレクトリに配置すると、ユーザー コントロール コードが必要な順序以外でコンパイルされるため、許可されません。ユーザー コントロールを App_Code フォルダーに配置する必要はなく、これらのコントロールはアプリケーション内の任意のページですでに使用できることに注意してください。
App_Code フォルダーのプログラミング言語を推測します。
App_Code フォルダーには、どちらのプログラミング言語で書かれたファイルが含まれているかが明示的にマークされていません。代わりに、ASP.NET は、App_Code フォルダーに含まれるファイルに基づいて、App_Code フォルダーに対してどのコンパイラーを呼び出す必要があるかを推測します。 App_Code フォルダーに .vb ファイルが含まれている場合、ASP.NET は Visual Basic コンパイラーを使用し、.cs ファイルが含まれている場合、ASP.NET は C# コンパイラーを使用します。
App_Code フォルダーにプログラミング言語を明示的に示していないファイル (.wsdl ファイルなど) のみが含まれている場合、ASP.NET は Web アプリケーションの既定のコンパイラーを使用します。このコンパイラーは、Web アプリケーションまたはコンピューター構成ファイルのコンパイル要素にあります。 。
App_Code フォルダー内の複数のプログラミング言語の使用 App_Code フォルダー内のソース コードは 1 つのアセンブリにコンパイルされるため、App_Code フォルダー内のすべてのファイルは同じプログラミング言語で作成する必要があります。たとえば、App_Code フォルダーには、Visual Basic と C# の両方で記述されたソース コードを含めることはできません。
ただし、App_Code フォルダーのサブフォルダーを別個のコンパイル可能なユニットとして扱うように Web アプリケーションを構成できます。このようにして、各フォルダーに異なるプログラミング言語で書かれたソース コードを含めることができます。この構成を指定するには、Web.config ファイルの codeSubDirectories 要素にコンパイル要素を作成し、サブフォルダーへの参照を追加します。次の例は、VBCode および CSCode という名前のサブフォルダーを構成して、異なるアセンブリにコンパイルする方法を示しています。
コードをコピーする
<コンパイルデバッグ="false">
<コードサブディレクトリ>
<ディレクトリ名を追加 = "VBCode" />
<ディレクトリ名を追加 = "CSCode" />
</codeサブディレクトリ>
</compilation>VBCode および CSCode サブフォルダーへの参照には、サブフォルダーに含まれるプログラミング言語に関する情報を含める必要はありません。 App_Code フォルダー自体の場合と同様に、ASP.NET はサブフォルダー内のファイルに基づいて使用するコンパイラーを推測します。
App_Code フォルダーのセキュリティ
App_Code フォルダー内のコードのセキュリティ問題は、Bin フォルダー内のコードのセキュリティ問題と基本的に同じです。コードは実行時にアセンブリにコンパイルされます。 Bin フォルダーよりも優れているのは、App_Code フォルダー内のファイルのソース コードを読み取ることができることです。ただし、コードを完全に理解していないと、セキュリティ上のリスクが依然として存在します。したがって、App_Code フォルダー内のソース コードは、同じソース コードから生成されたコンパイル済みコードと同様に注意して扱う必要があります。
抜粋: http://msdn2.microsoft.com/zh-cn/library/t990ks23(VS.80).aspx
-