Ringkasan beberapa masalah dalam mengupgrade ASP.NET 1.0 ke ASP.NET 2.0
Penulis:Eve Cole
Waktu Pembaruan:2009-06-30 16:06:42
Saya telah mengupgrade proyek 1.1 asli dalam beberapa hari terakhir dan menemukan beberapa masalah. Saya akan merangkumnya di sini dan mengingatkan teman-teman yang belum sempat melakukan upgrade atau siap melakukan upgrade untuk menghindari jalan memutar dan membuang waktu selama proses upgrade.
1. Bentuk pemrosesan file Global.asax berbeda, dan kesalahan akan terjadi setelah konversi. Di vs2003, Global.asax memiliki file pos kode di bawah 2.0, file pemisahan kode dipindahkan ke direktori App_Code sehingga dapat secara otomatis menjadi tersedia melalui aplikasi. Akses halaman ASP.NET mana pun dalam program. Atribut "Code-behind" akan dihapus dari arahan dalam file ASAX. vs2005 menulis kode langsung di Global.asax. Oleh karena itu, Anda perlu menghapus file yang dikonversi dan menambahkannya kembali, dan menyalin kode yang sesuai.
Tidak ada file proyek di 2.2.0. Dalam aplikasi 1.1, file proyek berisi pengaturan build, referensi ke rakitan eksternal, dan daftar file dalam proyek. Dalam aplikasi 2.0, pengaturan versi dan daftar file tidak lagi diperlukan karena semua file di direktori proyek Web dianggap sebagai bagian dari proyek Web.
3. Mode pemisahan kode.
Di ASP.NET 1.1, mode pemisahan kode memisahkan konten (seperti test.aspx) dari kode (seperti test.aspx.cs). Halaman konten mewarisi dari halaman yang dipisahkan kode, yang berisi kode buatan pengguna dan desainer.
ASP.NET 2.0 meningkatkan mode pemisahan kode melalui penggunaan kelas parsial, menggunakan kata kunci parsial untuk memisahkan kode dari satu kelas menjadi dua file terpisah. Ini memungkinkan suatu kelas untuk menjangkau banyak file. Dalam mode pemisahan kode yang baru, halaman konten mewarisi dari kelas yang dikompilasi, yang terdiri dari halaman yang dipisahkan kode terkait dan file rintisan yang dibuat secara otomatis yang mendefinisikan deklarasi bidang untuk kontrol yang digunakan di halaman konten. Perubahan ini memisahkan kode yang dihasilkan secara otomatis dari kode pengguna dan menjadikan halaman pemisahan kode jauh lebih kecil dan bersih. Struktur kelas parsial juga mengurangi risiko kerusakan halaman secara tidak sengaja dengan mengedit kode yang dihasilkan oleh perancang.
Jika terjadi kesalahan, periksa apakah ada kata kunci parsial, jika tidak tambahkan kata kunci parsial.
4. Pemeriksaan tata bahasa. Program asp.net1.1 tidak akan memeriksa kesalahan sintaks di aspx, aspcx dan file lain saat kompilasi, sedangkan vs2005 akan memeriksa sintaks di semua aspx, aspcx dan file lain di proyek saat kompilasi, jadi jika ada kesalahan sintaks, itu akan menyebabkan kompilasi Tidak dapat lewat.
5. Deklarasi kontrol. Jika semua kontrol dideklarasikan pada halaman .aspx, hapus semua deklarasi kontrol dari file pemisahan kode, jika tidak, kesalahan akan dilaporkan: Definisi duplikat.
6. (Khusus C#) Pindahkan kode pengait peristiwa dari fungsi InitialzeComponent di file pemisahan kode ke halaman .aspx. Perhatikan bahwa tindakan ini tidak berlaku untuk peristiwa yang dipanggil secara otomatis, termasuk Page_Init, Page_Load, Page_DataBind, Page_PreRender, Page_Unload, Page_Error, Page_AbortTransaction, dan Page_CommitTransaction.
7. Metode penerapan (situs yang telah dikompilasi sebelumnya, dikompilasi penuh, dapat diperbarui, dll.). Di 1.x, aplikasi Web telah dikompilasi sebelumnya dan disebarkan sebagai satu rakitan besar. Halaman konten (*.aspx) tidak dikompilasi di server, tetapi dapat diedit di server. Dengan mode kompilasi halaman baru dan struktur direktori, Anda dapat menggunakan berbagai konfigurasi berbeda untuk menyebarkan aplikasi ASP.NET 2.0. Dalam satu kasus, Anda dapat melakukan prakompilasi semua halaman ASPX dan menyebarkan aplikasi Web yang terdiri dari rakitan yang dikompilasi sepenuhnya. Dalam mode ini, Anda tidak dapat dengan mudah mengubah aplikasi di server. Alternatifnya, Anda dapat menerapkan aplikasi Anda tanpa mengkompilasi kode apa pun terlebih dahulu. Dalam konfigurasi ini, Anda dapat mengubah halaman .aspx, file terpisah kode, atau kode lainnya dalam aplikasi langsung di server. Ketika pengguna meminta halaman di server, halaman tersebut dikompilasi secara dinamis.
8. Ubah semua properti CodeBehind di halaman .aspx menjadi properti CodeFile
CodeBehind: Menentukan nama file yang dikompilasi yang berisi kelas-kelas yang terkait dengan halaman tersebut. Properti ini tidak dapat digunakan saat runtime.
Properti ini disediakan untuk kompatibilitas dengan versi ASP.NET sebelumnya untuk mengimplementasikan fungsionalitas di belakang kode. Di ASP.NET versi 2.0, Anda sebaiknya menggunakan properti CodeFile untuk menentukan nama file sumber, dan properti Inherits untuk menentukan nama kelas yang sepenuhnya memenuhi syarat.
File Kode
Menentukan jalur ke file di belakang kode yang direferensikan oleh halaman. Properti ini digunakan dengan properti Inherits untuk mengaitkan file sumber di belakang kode dengan halaman web. Properti ini hanya berlaku untuk halaman yang dikompilasi.
9. Pindahkan semua file kode independen dan AssemblyInfo.cs ke direktori App_Code.
Namun, setelah menjalankan panduan konversi, Anda mungkin menemukan bahwa beberapa file pemisahan kode (misalnya, *.aspx.cs atau *.ascx.vb) telah dipindahkan ke direktori App_Code. Hal ini menunjukkan bahwa halaman konten file pemisahan kode berisi arahan Codebehind yang formatnya salah dan tidak diatur dengan benar. Artinya, panduan konversi tidak dapat menentukan apakah file pemisahan kode benar-benar terikat ke halaman .aspx tertentu.
10. Layanan Web Di ASP.NET 1.x, layanan Web (.asmx) secara otomatis dibagi menjadi halaman header kosong (.asmx) dan file yang dipisahkan kode yang berisi metode sebenarnya.
Di bawah Asp.net2.0:
• Pindahkan kelas pemisahan kode ke direktori App_Code sehingga secara otomatis dapat diakses dari halaman ASP.NET mana pun dalam aplikasi.
• Ubah properti CodeBehind di file .asmx untuk menunjuk ke lokasi baru.
(Perhatikan bahwa file yang dipisahkan kode tidak menggunakan kelas lokal, sehingga atribut CodeBehind terus digunakan.)
• Ubah semua deklarasi Cakupan Default, Teman, dan Internal menjadi Publik.
Masalah apa yang Anda temui saat proses upgrade dari 1.1 ke 2.0? Anda dapat menuliskannya agar semua orang dapat belajar bersama dan menghindari jalan memutar.