這幾天升級了一下原來的1.1項目,發現了一些問題,總結一下放在這裡,也提醒還沒有來得及升級或准備升級的朋友,升級的過程中少走彎路,少浪費時間。
1.Global.asax文件的處理形式不一樣,轉化後將出現錯誤,在vs2003中Global.asax具有代碼後置文件,2.0下, 將代碼分離文件移到 App_Code 目錄下,以便使其自動變為可通過應用程序中的任意 ASP.Net 頁面訪問。“Code-behind”屬性將從 ASAX 文件的指令中刪除。vs2005則直接把代碼寫在Global.asax。所以需要刪除轉化過來的文件重新加入,並把相應的代碼copy過來。
2.2.0沒有了項目文件。 在 1.1 應用程序中,項目文件包含生成設置、對外部程序集的引用以及項目中的文件列表。而在 2.0 應用程序中,不再需要版本設置和文件列表,因為 Web 項目目錄下的所有文件都被視為 Web 項目的一部分。
3.代碼分離模式。
在 ASP.Net 1.1 中,代碼分離模式使內容(例如 test.aspx)與代碼(例如 test.ASPx.cs)分離。內容頁面從代碼分離頁面繼承而來,代碼分離頁面包含用戶和設計器生成的代碼。
ASP.Net 2.0 通過使用局部類來增強代碼分離模式,使用 partial 關鍵字可以將單個類的代碼分隔到兩個獨立的文件中。它允許一個類跨越多個文件。在新的代碼分離模式中,內容頁面從編譯的類繼承而來,它由相應的代碼分離頁面以及自動生成的存根文件組成,存根文件用於為內容頁面中使用的控件定義字段聲明。此項更改使自動生成的代碼與用戶的代碼分離,並且使代碼分離頁面顯著變小且更加簡潔。局部類結構還降低了由於編輯設計器生成的代碼而不小心破壞頁面的風險。
如果出錯請檢查是否有partial 關鍵字,否則添加 partial 關鍵字。
4.語法檢查。ASP.Net1.1程序,編譯時不會檢查aspx、aspcx等文件中的語法錯誤,而vs2005編譯時會檢查項目中所有的aspx、ASPcx等文件中的語法,所以如果有語法錯誤,會導致編譯無法通過。
5.控件聲明。如果在 .ASPx 頁面上聲明了所有控件,則從代碼分離文件中刪除所有控件聲明,否則報錯:重復定義。
6.(僅限於 C#)將事件掛鉤代碼從代碼分離文件的 InitialzeComponent 函數移到 .ASPx 頁面中。請注意,此操作不適用於自動調用的事件,包括 Page_Init、Page_Load、Page_DataBind、Page_PreRender、Page_Unload、Page_Error、Page_AbortTransaction 和 Page_CommitTransaction。
7. 部署方式(預編譯、完整編譯、可更新站點等)。在 1.x 中,Web 應用程序是作為一個大型程序集而預編譯和部署的。內容頁面(*.aspx)不在服務器上編譯,但可以在服務器上編輯。借助新的頁面編譯模式和目錄結構,您就可以使用多種不同的配置來部署 ASP.Net 2.0 應用程序。一種情況,您可以預編譯所有的 ASPX 頁面並部署由完全編譯好的程序集組成的 Web 應用程序。在這種模式下,您不能在服務器上輕松地更改該應用程序。另一種情況,您可以在不預編譯任何代碼的情況下部署應用程序。在這種配置下,您可以直接在服務器上更改該應用程序中的 .ASPx 頁面、代碼分離文件或其他任何代碼。當用戶請求服務器上的頁面時,頁面將被動態編譯。
8.將 .ASPx 頁面中的所有 CodeBehind 屬性更改為 CodeFile 屬性
CodeBehind: 指定包含與頁關聯的類的已編譯文件的名稱。該屬性不能在運行時使用。
提供此屬性是為了與以前版本的 ASP.NET 的兼容,以實現代碼隱藏功能。在 ASP.Net 2.0 版中,應改用 CodeFile 屬性指定該源文件的名稱,同時使用 Inherits 屬性指定該類的完全限定名稱。
CodeFile
指定指向頁引用的代碼隱藏文件的路徑。此屬性與 Inherits 屬性一起使用可以將代碼隱藏源文件與網頁相關聯。此屬性僅對編譯的頁有效。
9.將所有獨立的代碼文件和AssemblyInfo.cs都被移到 App_Code 目錄下。
但運行轉換向導之後,您可能會發現某些代碼分離文件(例如,*.aspx.cs 或 *.ascx.vb)被移到 App_Code 目錄下。這表明代碼分離文件的內容頁面含有格式不正確的 Codebehind 指令,並且沒有進行正確設置。也就是說,轉換向導不能確定該代碼分離文件是否實際綁定到某個特定的 .ASPx 頁面。
10.Web 服務
在 ASP.Net 1.x 中,Web 服務 (.asmx) 自動拆分到空白標題頁面 (.asmx) 和包含實際方法的代碼分離文件中。
ASP.Net2.0下:
• 將代碼分離類移到 App_Code 目錄下,以便使其自動變為可通過應用程序中的任意 ASP.Net 頁面訪問。
• 更改 .asmx 文件中的 CodeBehind 屬性,以便指向新位置。
(請注意,代碼分離文件不使用局部類,因此繼續使用 CodeBehind 屬性。)
• 將所有的默認、FrIEnd 和 Internal 范圍的聲明更改為 Public。
在1.1到2.0的升級過程中,你遇到過什麼樣的問題呢?可以寫下來讓大家共同學習,少走彎路。