在 .aspx 頁面頂部的 @Page 指令中,使用 Codebehind 屬性指定後端代碼文件時,發布到 IIS 後報錯“找不到 CS 文件”或無法編譯。
| 屬性 | 用途 | 適用場景 |
|---|---|---|
CodeBehind | Visual Studio 設計時使用,指定代碼隱藏文件路徑。編譯後生成 DLL 放入 Bin 目錄,運行時不再需要 .cs 文件。 | Web Application Project (WAP),預編譯部署模式。 |
Src | 運行時動態編譯指令,告訴 ASP.NET 執行去哪裡找到 .cs 源文件進行即時編譯。 | Web Site Project (WSP),無預編譯、源碼部署模式。 |
<%@ Page language="c#" Codebehind="Main.aspx.cs" AutoEventWireup="false" Inherits="Hr.WebForm1" %>
若項目為 Web Site 類型或未預編譯部署,運行時會嘗試尋找 Main.aspx.cs 文件進行編譯,但 CodeBehind 不被 ASP.NET 運行時識別,導致找不到文件。
<%@ Page language="c#" Src="Main.aspx.cs" AutoEventWireup="false" Inherits="Hr.WebForm1" %>
將 CodeBehind 改為 Src,ASP.NET 運行時會根據該路徑動態編譯源文件。
Inherits 指定類的完整命名空間名稱,必須與 .cs 文件中的類名一致。CodeBehind,發布時只需部署 DLL 和 .aspx(無 .cs)。Src。理解兩種專案模型的編譯部署差異,是解決此類問題的關鍵。