.NET1.x升級到.NET2.x問題小結
這幾天升級了一下原來的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的升級過程中,你遇到過什麼樣的問題呢?可以寫下來讓大家共同學習,少走彎路。
相關文章
- XCode 10 升級問題總結XCode
- 升級 node18 遇到的問題總結
- SpringBoot 2.1.0 升級到 2.5.4 遇到的問題彙總Spring Boot
- Swift3.0專案升級到4.2遇到問題Swift
- Laravel 5.5.* 升級到 5.7.* 問題記錄Laravel
- 阿里雲ACK從1.22升級到1.24問題彙總阿里
- ArchLinux/Manjaro升級到6.9核心後的問題解決LinuxJAR
- MacOS升級到Monterey後python SSL握手失敗問題MacPython
- Laravel5.5 升級到 5.7 問題及解決方法Laravel
- Android targetSdkVersion 升級到 26 總結Android
- Scout TNTSearch 驅動 升級小結
- ReactNative升級0.56.0注意問題React
- android studio 2.2.3 升級到3.1.2 原有專案編譯問題Android編譯
- Laravel 5.5 升級到 5.5.42 後遇到的 Cookie 序列化問題LaravelCookie
- Swift2.3升級到Swift3.0小記Swift
- 專案升級到.Net8.0 Autofac引發詭異的問題
- 使用DBUA升級 Oracle 11.2.0.4到Oracle 19C的問題記錄Oracle
- Android studio 升級到3.1出現的問題Caused by: java.util.NoSuchElementExceptionAndroidJavaException
- Hbase問題小結(一)
- .Net Core 2.1 升級3.1 問題整理
- 升級 Homestead box 遇到的 502 問題
- oracle 10 rac 升級 10.2.0.1升級到10.2.0.5Oracle
- cnpm 核心模組 npminstall 升級到 async 總結NPM
- React Native SDK 升級問題及分包方案React Native
- Nuxt升級2.0.0時出現的問題UX
- ccproject升級到1135Project
- Flutter使用TabBar問題小結FluttertabBar
- mongodb單機從3.2升級到4.0.4升級MongoDB
- 專案 Laravel 框架 5.1 升級到 5.5 過程中的一些問題Laravel框架
- 從 PHP5.2 升級到 PHP7.1 遇到的函式引數問題PHP函式
- chorme自動升級導致跨域問題ORM跨域
- Angular CLI 升級 6.0 之後遇到的問題Angular
- [BUG反饋]升級遇問題1103升1212 -step3.htmlHTML
- iOS12測試版升級常見問題 iOS12值得升級嗎?iOS
- MySQL 5.7 升級到 8.0MySql
- Cocospod 升級到指定版本
- ABP Framework 手動升級指南:從6.0.1升級到7.0.0Framework
- 虛擬環境的jupter notebook 版本升級問題