c# Web Forms 檔案夾的作用

更新 2026.09.21

1. Bin 資料夾

Bin 資料夾包含應用程式所需的,用於控制項、元件或需要引用的任何其他程式碼的可部署程序集。該目錄中存在的任何 .dll 文件將自動地連結到應用程式。

2. App_Browser 資料夾

此可選的資料夾包含 .browser 檔案。.browser 檔案描述瀏覽器(不管是行動裝置瀏覽器,還是桌上型電腦瀏覽器)的特徵和功能。

3. App_Code 資料夾

App_Code 資料夾正好在 Web 應用程式根目錄下,其儲存所有應作為應用程式的一部分動態編譯的類別檔案。這些類別檔案自動連結到應用程序,而不需要在頁面中添加任何明確指令或聲明來創建依賴性。App_Code 資料夾中所放置的類別檔案可以包含任何可識別的 ASP.NET 元件-自訂控制項、輔助類別、build 提供者、業務類別、自訂提供者、HTTP 處理程序等。

注意:在開發時,對 App_Code 資料夾的變更會導致整個應用程式重新編譯。對於大型項目,這可能不受歡迎,而且很耗時。為此,鼓勵大家將程式碼進行模組化處理到不同的類別庫中,並依照邏輯上相關的類別集合進行組織。應用程式專用的輔助類別大多應放置在 App_Code 資料夾中。

App_Code 資料夾中存放的所有類別檔案應使用相同的語言。如果類別檔案使用兩種或多種語言編寫,則必須建立特定語言的子目錄,以包含每種語言編寫的類別。一旦根據語言組織這些類別文件,就要在 web.config 文件中為每個子目錄添加一個設定:


<compilation>

<codeSubDirectories>
    <add directoryName="VBFolder" />
  </codeSubDirectories>
</compilation>

重要的是,特定語言的子目錄應在 web.config 檔案中註冊,否則,不管它們屬於哪個資料夾,App_Code 資料夾下的所有檔案將被編譯成一個單獨的組件。上述設定腳本描述了這麼一種情況,就是所有的 C# 檔案都放在 App_Code 資料夾的根目錄下,而把幾個 Visual Basic .NET 類別檔案移入 VBFolder 目錄中。如果 `

` 節中提到的目錄不存在,則會收到一個編譯錯誤提示。 App_Code 根資料夾中的檔案被編譯成 `App_Code_xxx.dll` 組件,其中 xxx 是隨機產生的字元序列。一個給定子目錄中的檔案將被編譯成一個名為 `App_SubCode_xxx_yyy.dll` 的動態建立的組件,其中 xxx 指示子目錄的名稱,而 yyy 是一個隨機字元序列。只有在應用程式根目錄中的 web.config 檔案中進行了設置,` ` 節才有效。 在 App_Code 目錄或任何其他子目錄中放置一個 assemblyinfo.cs 文件,可以建立一個強命名的組件。顯然,如果該資料夾包含 Visual Basic .NET 文件,那麼將使用 assemblyinfo.vb 文件。組件設定檔可以引用一個 `.snk` 檔來保存強名稱的金鑰。 > **注意**:給一個組件設定一個強名稱,首先必須取得一個公開/私有金鑰對。透過使用強名稱(Strong Name)工具(sn.exe),可以獲得這樣一個金鑰對。強名稱工具是我們可以在 .NET Framework 的安裝路徑中發現的 SDK binary 之一。密鑰對檔案通常有一個 `.snk` 擴展名。可以將該檔案儲存到一個應用程式資料夾中,並在 assemblyinfo.cs 檔案中引用它,如下所示: “`csharp [assembly: AssemblyKeyFileAttribute(@”yourKeyPair.snk”)] “` 注意,Visual Basic .NET 是在包含 Visual Studio Solution 的目錄中尋找金鑰文件,而 C# 編譯器則在包含該 binary 的目錄中尋找金鑰檔案。據此可知,用此屬性調整我們使用的路徑,或把密鑰檔案放在適當的資料夾中。 在隨後發生的任何重新生成中,程序集的名稱將發生變化。同時,老的 AppDomain 請求一結束,就刪除舊的程式集。 App_Code 資料夾並非只能包含類別檔案。特別是,它可以包含並能自動地處理代表資料架構的 XSD 檔案。把一個 XSD 檔案加入到該資料夾時,編譯器將把它解析成一個有類型的 DataSet 類,並將它加入到應用程式作用域中。在 ASP.NET 1.x 中,這項工作由 Visual Studio .NET 精靈,使用一個命令列實用程式(xsd.exe)完成的。 > **注意**:使用 web.config 檔註冊一個元件(例如,一個自訂的伺服器控制項或一個自訂的 HTTP 處理程序)時,通常會要求指定包含該程式碼的組件名稱。如果該元件定義在 App_Code 資料夾中,則應該用什麼名稱來指示組件?在這種情況下,只是忽略程序集訊息,並規定完整的類別名稱即可。如果沒有規定任何程序集,則 ASP.NET 運行庫將試圖從任何已裝載的程式集中裝入該類,包括為 App_Code 資料夾動態建立的組件。 ## 4. App_Data 資料夾 App_Data 資料夾應該包含應用程式的本機資料儲存。它通常以檔案(諸如 Microsoft Access 或 Microsoft SQL Server Express 資料庫、XML 檔案、文字檔案以及應用程式支援的任何其他檔案)形式包含資料儲存。該資料夾內容不由 ASP.NET 處理。此資料夾是 ASP.NET 提供者儲存自身資料的預設位置。 > **注意**:預設 ASP.NET 帳戶被授予對資料夾的完全存取權。如果碰巧要改變 ASP.NET 帳戶,請務必確保新帳戶被授予對該資料夾的讀/寫存取權。 ## 5. App_GlobalResources 資料夾 說明見文末的資料夾總表。 ## 6. App_LocalResources 資料夾 說明見文末的資料夾總表。 ## 7. App_Themes 資料夾 App_Themes 資料夾為 ASP.NET 控制項定義主題。主題包含在 App_Themes 資料夾下的一個資料夾。根據定義,主題是一組帶有樣式資訊的檔案。主題資料夾中的檔案內容被編譯,以產生一個類,而該類被頁面調用以程式設計的方式設定主題化控制項的樣式。 App_Themes 資料夾列出應用程式的本機主題。應用程式還可以繼承如下資料夾中定義的全域主題: “`text %WINDOWS%\Microsoft.NET\Framework\[version]\ASP.NETClientFiles\Themes “` 從編譯的角度來看,全域主題和局部主題沒有差別。如果一個給定名稱的主題,既存在應用程式的本機主題,又存在伺服器機器的全域主題,則本機主題優先適用。 ## 8. App_WebReferences 資料夾 在 Visual Studio .NET 2003 中,一個需要存取 Web 服務的 ASP.NET 應用程序,將透過「新增 Web 參考」對話方塊取得對應的 `.wsdl` 檔案。Web 服務的 WSDL(Web Service Description Language)文檔,對於從頁面使用 Web 服務是不夠的。ASP.NET 頁面最終是一個託管類,並且需要與另一個託管類通訊。因此,Web 服務被一個代理類別所包裝。這個代理類別是由 Visual Studio 使用命令列工具 wsdl.exe 的服務所建立的。此代理類別盡量包含與 Web 服務商的 Web 方法一樣多的方法,並且它結合了 Web 服務的公共介面定義的任何自訂的資料類型。 這個操作不需要開發人員付出很大的代價。然而,開發人員顯然要依賴 Visual Studio 來產生代理程式類別。如果能夠直接把 `.wsdl` 檔案放在應用程式的目錄樹的某個地方,並讓 ASP.NET 處理其餘的任務,這樣不是更容易、更簡單嗎?這正好是 App_WebReferences 資料夾要做的事情。 它識別那些用來描述所綁定的 Web 服務的 `.wsdl` 文件,並產生運行時代理類,以便 ASP.NET 頁面能夠以類型安全的方式放置對 Web 服務的呼叫。App_WebReferences 資料夾可以包含子資料夾。子資料夾的名稱驅動最後得到的代理類別的命名空間,而 WSDL 檔案定義類別名稱。例如,samples.wsdl 檔案和 ProsAspNet20 子資料夾將建立一個稱為 ProAspNet20.Samples 的代理程式類別。此動態所建立的組件稱為 `App_WebReferences.xxx.dll`,其中 xxx 是一個隨機的字元序列。 ## 資料夾總表 | 資料夾名稱 | 檔案類型 | 註釋 | | — | — | — | | Bin | .dll | 包含應用程式所需的任何預先產生的組件 | | App_Browsers | .browser | 包含應用程式特有的瀏覽器定義文件,ASP.NET 用它來識別各瀏覽器及確定它們的功能 | | App_Code | .cs、.vb、.xsd、自訂的檔案類型 | 包含作為應用程式的一部分編譯的類別的原始程式。當頁面被要求時,ASP.NET 會編譯該資料夾中的程式碼。該資料夾中的程式碼在應用程式中自動地被引用 | | App_Data | .mdb、.mdf、.xml | 包含 Microsoft Office Access 和 SQL Express 檔案以及 XML 檔案或其他資料儲存 | | App_GlobalResources | .resx | 包含在本地化應用程式中以程式設計方式使用的資源檔案 | | App_LocalResources | .resx | 包含頁範圍的資源檔案 | | App_Themes | .skin、.CSS、.xsl、附屬文件 | 包含一組定義 ASP.NET 頁面和控制項外觀的文件 | | App_WebReferences | .wsdl | 包含用於產生代理類別的WSDL文件,以及與在應用程式中使用 Web 服務相關的其他文件 |