如果您的 Web 應用程序包括要在多個頁之間共享的代碼,您可以將代碼保存在 Web 應用程序根目錄下的兩個特殊文件夾(Bin 文件夾和 App_Code 文件夾)中的某個文件夾中。
Bin 文件夾
可以在 Bin 文件夾中存儲編譯的程序集,并且 Web 應用程序任意處的其他代碼(如頁代碼)會自動引用該文件夾。典型的示例是您為自定義類編譯好的代碼。您可以將編譯后的程序集復制到 Web 應用程序的 Bin 文件夾中,這樣所有頁都可以使用這個類。
Bin 文件夾中的程序集無需注冊。只要 .dll 文件存在于 Bin 文件夾中,ASP.NET 就可以識別它。如果您更改了 .dll 文件,并將它的新版本寫入到了 Bin 文件夾中,則 ASP.NET 會檢測到更新,并對隨后的新頁請求使用新版本的 .dll 文件。
Bin 文件夾的安全性
將編譯后的程序集放入 Bin 文件夾中會帶來安全風險。如果是您自己編寫和編譯的代碼,那么您了解代碼的功能。但是,如果不是您自己編寫和編譯的代碼,那么您必須像對待任何可執行代碼一樣來對待 Bin 文件夾中已編譯的代碼。在完成代碼測試并確信已了解代碼功能之前,要對已編譯的代碼保持謹慎的態度。
請注意以下安全方面的知識,這些知識與是否將已編譯的代碼放入 Bin 文件夾有關:
Bin 文件夾中程序集的作用范圍為當前應用程序。因此,它們無法訪問當前 Web 應用程序之外的資源或調用當前 Web 應用程序之外的代碼。
運行時,程序集的訪問級別由本地計算機上指定的信任級別確定。
如果您使用了諸如 Visual Studio 這樣的設計器,那么 Bin 文件夾中的代碼運行所在的上下文與運行時不同。例如,代碼可能以完全信任狀態運行。
App_Code 文件夾
可以在 App_Code 文件夾中存儲源代碼,在運行時將會自動對這些代碼進行編譯。Web 應用程序中的其他任何代碼都可以訪問產生的程序集。因此,App_Code 文件夾的工作方式與 Bin 文件夾很類似,不同之處是您可以在其中存儲源代碼而非已編譯的代碼。App_Code 文件夾及其在 ASP.NET Web 應用程序中的特殊地位使您可以創建自定義類和其他僅源代碼文件,并在 Web 應用程序中使用它們而不必單獨對它們進行編譯。