Pertanyaan ini ada karena memiliki signifikansi historis, tetapi tidak dianggap sebagai pertanyaan yang baik untuk topik di situs ini, jadi tolong jangan gunakan itu sebagai bukti bahwa Anda dapat mengajukan pertanyaan serupa di sini.
Selalu ada fitur yang akan berguna dalam skenario pinggiran, tetapi karena alasan itulah kebanyakan orang tidak mengetahuinya. Saya meminta fitur yang biasanya tidak diajarkan oleh buku teks.
Pertanyaan bagus, saya berharap bisa memilih beberapa kali!
Gavin Miller
1
Sepakat. Saya suka utas seperti ini. Ada begitu banyak kedalaman pada kerangka itu, sehingga terkadang Anda kagum pada hal-hal yang tidak pernah Anda ketahui ada di sana.
Deane
Saya belajar banyak trik baru yang keren dari tanggapan di utas ini - terima kasih! :)
Maxim Zaslavsky
16
Alih-alih "Fitur tersembunyi dari .." seharusnya hal-hal ini tidak dinamai "Fitur Dikenal Sedikit dari .." karena sebagian besar setiap jawaban didokumentasikan dengan baik di MSDN atau di tempat lain, hanya tidak dikenal atau digunakan secara umum.
Betulkah? Saya baru saja akan menginstal SMTP Server palsu, seperti Dumbster. Saya menyembunyikan permata.
Eduardo Molteni
2
Adakah yang tahu jika Anda dapat menentukan bagian UNC untuk lokasi direktori?
Mark Sherretta
32
Lebih baik lagi, letakkan ini di machine.config box dev Anda, jadi Anda tidak perlu mengubah web.config pada setiap aplikasi yang Anda buat.
Max Toro
Bisakah Anda atur jadi ini hanya pada host lokal? Dengan begitu Anda tidak perlu mengubahnya setiap saat?
chobo2
Tidak ada pengaturan untuk itu. Anda harus mengelola perbedaan konfigurasi menggunakan metode lain (Proyek Penerapan Web, Membangun tugas, dll)
John Sheehan
210
Jika Anda menempatkan file bernama app_offline.htm
di root direktori aplikasi web, ASP.NET 2.0+ akan mematikan aplikasi dan menghentikan pemrosesan normal setiap permintaan masuk baru untuk aplikasi itu, hanya menampilkan konten app_offline.htm mengajukan semua permintaan baru .
Ini adalah cara tercepat dan termudah untuk menampilkan pemberitahuan "Situs Sementara Tidak Tersedia" Anda saat menggunakan kembali (atau memutar kembali) perubahan ke server Produksi.
Juga, seperti yang ditunjukkan oleh marxidad , pastikan Anda memiliki setidaknya 512 byte konten dalam file sehingga IE6 akan membuatnya dengan benar.
Aduh! Hati-hati saat menggunakan ini dengan MOSS 2007. Ini hanya akan berfungsi untuk halaman yang telah diakses sejak IIS terakhir restart. Jadi, jika Anda menambahkan halaman ini ke root virtual wss Anda, kemudian coba buka halaman yang belum diakses sebelumnya, Anda akan mendapatkan 404.
Marc
1
@Marc - Mendapat tip ini dari Scott Guthrie, jika Anda merasa murah hati, Anda akan membantu banyak SharePoint devs menghindari skenario ini jika Anda mengomentari artikel Gu: weblogs.asp.net/scottgu/archive/2005/10/ 06 / 426755.aspx
Troy DeMonbreun
Plus, ini juga akan memicu daur ulang App Domain dan menutup koneksi database terbuka, setelah semua permintaan selesai.
Bart Verkoeijen
Ada peringatan untuk ini: IIS mengembalikan konten app_offline.htm dengan Kode Status HTTP 404. Jika mesin pencari berkeliaran dan mencoba untuk mengindeks situs Anda saat Anda dalam mode offline ini, Anda mungkin tidak menghargai hasilnya. Tapi ini berfungsi baik untuk aplikasi web perusahaan pribadi saya!
Beberapa pengembang dapat berargumen bahwa lebih baik membungkusnya secara manual di HttpContext.Response daripada melemparkan pengecualian yang merupakan operasi yang cukup mahal di buku .NET.
lubos hasko
Bukankah ini bentuk yang buruk? Anda menunjukkan kesalahan 404, sedangkan Anda ingin menampilkan kesalahan / pengecualian.
Donnie Thomas
1
Satu kasus yang bisa saya pikirkan adalah jika seseorang secara jahat mengacaukan parameter dan memasukkan sesuatu yang tidak valid, Anda mungkin menginginkan 404 generik bukan kesalahan spesifik.
John Sheehan
3
Terpilih murni karena saya sekarang mengetahui situs .NET Tip of the Day.
Kon
ini bekerja hanya ketika Anda melemparkannya di httpModule atau httpHandler
Khaled Musaied
75
Ini yang terbaik. Tambahkan ini ke web.config Anda untuk kompilasi yang JAUH lebih cepat. Ini adalah posting 3.5SP1 melalui QFE ini .
<compilationoptimizeCompilations="true">
Ringkasan cepat: kami memperkenalkan sakelar optimalisasi Kompilasi baru di ASP.NET yang dapat sangat meningkatkan kecepatan kompilasi dalam beberapa skenario. Ada beberapa tangkapan, jadi baca terus untuk detail lebih lanjut. Switch ini saat ini tersedia sebagai QFE untuk 3.5SP1, dan akan menjadi bagian dari VS 2010.
Sistem kompilasi ASP.NET mengambil pendekatan yang sangat konservatif yang menyebabkannya menghapus semua pekerjaan sebelumnya yang telah dilakukannya setiap kali perubahan file 'tingkat atas'. File 'Tingkat atas' mencakup apa saja di nampan dan App_Code, serta global.asax Meskipun ini berfungsi dengan baik untuk aplikasi kecil, menjadi hampir tidak dapat digunakan untuk aplikasi yang sangat besar. Misalnya, seorang pelanggan mengalami kasus yang memerlukan waktu 10 menit untuk menyegarkan halaman setelah membuat perubahan apa pun ke rakitan 'tempat sampah'.
Untuk meringankan rasa sakit, kami menambahkan mode kompilasi 'dioptimalkan' yang mengambil pendekatan yang jauh lebih konservatif untuk kompilasi.
Apakah ini "aktif secara default" dengan VS 2010 atau haruskah saya mencobanya?
M4N
73
HttpContext.Current akan selalu memberi Anda akses ke Permintaan / Respons / konteks konteks saat ini, bahkan ketika Anda tidak memiliki akses ke properti Halaman (misalnya, dari kelas pembantu yang ditambah secara longgar).
Anda dapat melanjutkan mengeksekusi kode pada halaman yang sama setelah mengalihkan pengguna ke yang lain dengan memanggil Response.Redirect ( url , false )
Anda tidak perlu file .ASPX jika semua yang Anda inginkan adalah Halaman yang dikompilasi (atau IHttpHandler ). Cukup atur jalur dan metode HTTP untuk menunjuk ke kelas di <httpHandlers>elemen dalam file web.config.
Sebuah Halaman objek dapat diambil dari ASPX berkas pemrograman dengan menelepon PageParser.GetCompiledPageInstance (VirtualPath, aspxFileName, Konteks)
Tentang Response.Redirect (url, false) - Itu adalah apa yang saya harapkan untuk waktu yang cukup lama .. Saya tidak tahu bagaimana saya melewatkan itu tetapi thanxxx
Subliminal Hash
1
Bisakah seseorang menjelaskan apa yang akan Anda lakukan dengan ini? Saya tahu ini memiliki beberapa nilai, tetapi saya tidak tahu mengapa ...
Deane
5
Jika Anda ingin mengarahkan pengguna ke alamat lain tetapi masih memiliki beberapa pemrosesan back-end untuk dilakukan (misalnya, permintaan pembuatan laporan yang mengalihkan ke halaman status pembuatan laporan sambil terus menghasilkan laporan di latar belakang)
Mark Cidade
Bisakah seseorang menjelaskan situasi yang berguna untuk PageParser.GetCompiledPageInstance (..)? Dokumen mengatakan untuk penggunaan infrastruktur - ia mengembalikan tipe IHttpHandler jadi saya tidak melihat bagaimana itu bisa digunakan secara praktis.
John K
@ jdk: Saya telah menggunakannya di masa lalu ketika menimpa penangan default untuk * .aspx permintaan sehingga saya dapat menggunakan objek IHttpHandler di-memori dinamis tetapi juga menggunakan GetCompiledPageInstance () untuk file fisik * .aspx.
Mengesampingkan pengaturan web.config untuk menegakkan debug ke false, mengaktifkan kesalahan khusus dan menonaktifkan penelusuran. Tidak lagi lupa mengubah atribut sebelum penerbitan - biarkan semuanya dikonfigurasi untuk pengembangan atau lingkungan pengujian dan perbarui pengaturan ritel produksi.
Saya kadang-kadang lupa mengubah kompilasi debug ke false sebelum penerbitan, yang secara negatif mempengaruhi kinerja. Tidak masalah lagi!
Roy Tinker
59
Mengaktifkan intellisense untuk MasterPages di halaman konten
saya yakin ini adalah hack yang sangat sedikit diketahui
Sebagian besar waktu Anda harus menggunakan metode findcontrol dan melemparkan kontrol di halaman master dari halaman konten ketika Anda ingin menggunakannya, arahan MasterType akan memungkinkan intellisense di studio visual setelah Anda melakukannya.
Secara pribadi saya pikir fitur harus dibiarkan tidak diketahui oleh orang-orang, itu memasangkan halaman ke masterpage. Jika Anda akhirnya menggunakan properti / metode masterpage dan kemudian mengubah masterpage Anda berakhir dengan mimpi buruk pemeliharaan.
Phill
@ Phil: Terkadang diperlukan dan memiliki akses yang diketik secara statis ke masterpage jauh lebih baik daripada pendekatan FindControl. Setidaknya Anda mendapatkan pesan kompiler dan dapat dengan cepat memperbaikinya.
Durden81
58
HttpContext.Items sebagai alat caching tingkat-permintaan
Ini akan menjadi poin saya juga, saya menggunakan ini di kontrol bersarang untuk lulus / menerima informasi tingkat permintaan. Ii juga menggunakan ini dalam MVC untuk menyimpan daftar file js untuk ditambahkan, berdasarkan sebagian tampilan.
Tracker1
1
Saya menggunakan ini ketika saya menggunakan perutean asp.net untuk meneruskan parameter yang diambil dari url ke halaman saya. (tidak dengan MVC) bagus untuk menulis ulang url dan cukup fleksibel.
Alexandre Brisebois
Hmmmm, hanya memikirkan suatu tempat di mana saya bisa menggunakan ini bukannya Sesi - ta!
Mike Kingscott
52
Dua hal menonjol di kepala saya:
1) Anda dapat menghidupkan dan mematikan Trace dari kode:
Anda dapat memiliki kontrol di ASPX yang tidak muncul di Class1, dan sebaliknya, tetapi Anda perlu mengingatkan untuk memeriksa kontrol Anda untuk nulls.
Saya akan memilih ini, tetapi kehabisan suara. Saya akan mencoba dan ingat untuk kembali untuk memilih ini. Saya tidak tahu bahwa kami dapat memiliki file Code Behind yang sama untuk beberapa halaman. Tidak yakin, bagaimana cara kerjanya.
Vaibhav
5
Apakah ada orang lain yang berpikir itu risiko keamanan untuk memungkinkan Anda mengaktifkan jejak dari url? (# 1) Saya tidak akan menurunkan pertanyaan ini, tetapi penting untuk memahami risiko di sana.
Kevin Goff
5
Absolutelly, Anda harus benar-benar meletakkan kode itu di blok
#ifdef
Komentar yang bagus, menunjukkan aspek keamanan.
Vaibhav
2
Mengapa risiko keamanan untuk mengaktifkan jejak dari url? Bagaimana itu bisa digunakan untuk menyakiti saya?
Kamarey
48
Kamu bisa memakai:
Request.Params[Control.UniqueId]
Untuk mendapatkan nilai kontrol SEBELUM kondisi tampilan diinisialisasi (Control.Text dll akan kosong pada saat ini).
Inisialisasi kondisi tampilan tidak berlaku dengan Request.Params. Gunakan SEBELUM meningkatkan metode LoadPostData dari kontrol yang diterapkan IPostBackDataHandler.
chapluck
46
WebMetode.
Anda dapat menggunakan panggilan balik ASP.NET AJAX ke metode web yang ditempatkan di halaman ASPX. Anda dapat menghias metode statis dengan atribut [WebMethod ()] dan [ScriptMethod ()]. Sebagai contoh:
Pemetaan tag memungkinkan Anda untuk menukar kontrol yang kompatibel pada waktu kompilasi pada setiap halaman dalam aplikasi web Anda. Contoh yang berguna adalah jika Anda memiliki kontrol ASP.NET saham, seperti DropDownList, dan Anda ingin menggantinya dengan kontrol khusus yang berasal dari DropDownList. Ini bisa menjadi kontrol yang telah disesuaikan untuk menyediakan caching data pencarian yang lebih optimal. Alih-alih mengedit setiap formulir web dan mengganti yang dibangun di DropDownLists dengan versi kustom Anda, Anda dapat meminta ASP.NET melakukannya untuk Anda dengan memodifikasi web.config:
Ini akan sangat membingungkan bagi pengembang lain di tim Anda
Aykut Akıncı
1
@ Aykut - Memang bisa jadi, itulah sebabnya saya menyatakan bahwa kegunaannya agak sempit, namun, ketika diperlukan sangat berguna. Juga, saya akan memastikan bahwa setiap penggunaan Pemetaan Tag didokumentasikan dengan sangat jelas untuk menghindari kebingungan dan ambiguitas.
CraigTP
43
HttpModules . Arsitekturnya sangat elegan dan gila. Mungkin bukan fitur tersembunyi, tapi keren juga.
HttpModules adalah sesuatu yang canggih, tapi saya tidak akan menyebutnya jarang atau kurang digunakan (atau panggil saya naif). Tapi ya, saya suka arsitekturnya.
Vaibhav
+1 karena banyak pengembang berpengalaman mungkin tahu tentang HttpModules tetapi tidak sepenuhnya memahami hubungan mereka dengan permintaan. (Hal yang sama dengan HttpHandlers)
John Bubriski
34
Anda dapat menggunakan Komentar ASP.NET dalam halaman .aspx untuk mengomentari seluruh bagian halaman termasuk kontrol server. Dan konten yang dikomentari tidak akan pernah dikirim ke klien.
Keindahan sebenarnya dari pembuat ekspresi kode adalah bahwa Anda dapat menggunakan penyatuan data seperti ekspresi dalam situasi yang bukan penyatuan data. Anda juga bisa membuat Pembuat Ekspresi lain yang melakukan fungsi lainnya.
Yah saya kira saya tidak pernah sampai ke yang lain.
andleer
2
+1, fitur sangat keren ... Itu sebenarnya sangat mirip dengan ekstensi markup WPF
Thomas Levesque
Bukankah ini sama dengan menggunakan <%= /*code*/ %>?
bevacqua
33
Penggunaan jenis file ASHX:
Jika Anda ingin hanya output beberapa html atau xml dasar tanpa melalui halaman event handler maka Anda dapat mengimplementasikan HttpModule secara sederhana
Beri nama halaman tersebut sebagai SomeHandlerPage.ashx dan cukup masukkan kode di bawah ini (hanya satu baris) di dalamnya
Perlu dicatat bahwa Anda harus menambahkan IRequiresSessionState atau IReadOnlySessionState jika Anda membutuhkannya, jika tidak, ia tidak akan ada di sana.
Tracker1
3
Perlu juga dicatat bahwa Anda dapat menentukan pengaturan handler di web.config sehingga Anda tidak perlu memiliki file ashx secara fisik. Atau Anda dapat mendaftarkan pawang secara programatik di aplikasi Anda mulai di global asax.
+1. Bisakah Anda memposting contoh kode pendek sebaris. Saya pikir itu akan menghasilkan lebih banyak perhatian dan peningkatan. Saya ingin yang ini naik.
Saya bekerja pada aplikasi asp.net yang melalui audit keamanan oleh perusahaan keamanan terkemuka dan saya belajar trik mudah ini untuk mencegah kerentanan keamanan yang kurang diketahui tetapi penting.
Pertimbangkan menggunakan Page.ViewStateUserKey untuk melawan serangan satu-klik. Jika Anda mengautentikasi penelepon Anda dan menggunakan ViewState, setel properti Page.ViewStateUserKey di pawang event Page_Init untuk mencegah serangan satu-klik.
Tetapkan properti ke nilai yang Anda tahu unik untuk setiap pengguna, seperti ID sesi, nama pengguna, atau pengidentifikasi pengguna.
Serangan satu klik terjadi ketika penyerang membuat halaman Web (.htm atau .aspx) yang berisi bidang formulir tersembunyi bernama __VIEWSTATE yang sudah diisi dengan data ViewState. ViewState dapat dihasilkan dari halaman yang penyerang sebelumnya buat, seperti halaman keranjang belanja dengan 100 item. Penyerang memikat pengguna yang tidak menaruh curiga untuk meramban ke halaman, dan kemudian penyerang menyebabkan halaman dikirim ke server di mana kondisi tampilan yang valid. Server tidak memiliki cara untuk mengetahui bahwa kondisi tampilan berasal dari penyerang. Validasi ViewState dan HMACs tidak melawan serangan ini karena ViewState valid dan halaman dieksekusi di bawah konteks keamanan pengguna.
Dengan mengatur properti ViewStateUserKey, ketika penyerang meramban halaman untuk membuat ViewState, properti diinisialisasi dengan namanya. Ketika pengguna yang sah mengirimkan halaman ke server, itu diinisialisasi dengan nama penyerang. Akibatnya, pemeriksaan HMAC ViewState gagal dan pengecualian dihasilkan.
Ingat juga untuk meninggalkan base.OnInit (e); untuk fungsi Page_Init () untuk melakukan tugasnya.
Druid
Saya pikir trik ini bisa gagal jika pengguna sungguhan tidak menerima cookie, atau jika sessionid memiliki batas waktu.
Aristos
1
Anda tidak perlu base.OnInit(e);jika menggunakan AutoEventWireup="true"untuk halaman tersebut.
Adam Nofsinger
1
Druid: Dia tidak mengesampingkan OnInit (dalam hal ini, base.OnInit (e) akan diperlukan).
crdx
Menggunakan ID sesi untuk ViewStateUserKey hanya berfungsi setelah sesi sebenarnya dimulai. Ini juga berarti bahwa halaman ini dapat habis setelah sesi berakhir. Dalam kasus di mana masalah tersebut menjadi perhatian, Anda mungkin mempertimbangkan menggunakan sesuatu yang lebih tahan lama, seperti alamat IP pengguna.
Menggunakan configSource untuk membagi file konfigurasi.
Anda dapat menggunakan atribut configSource di file web.config untuk mendorong elemen konfigurasi ke file .config lainnya, misalnya, alih-alih:
<appSettings><addkey="webServiceURL"value="https://some/ws.url"/><!-- some more keys --></appSettings>
... Anda dapat menyimpan seluruh bagian pengaturan aplikasi di file konfigurasi lain. Inilah yang baru web.config:
<appSettingsconfigSource="myAppSettings.config"/>
The myAppSettings.configFile:
<appSettings><addkey="webServiceURL"value="https://some/ws.url"/><!-- some more keys --></appSettings>
Ini cukup berguna untuk skenario di mana Anda menyebarkan aplikasi ke pelanggan dan Anda tidak ingin mereka mengganggu file web.config itu sendiri dan hanya ingin mereka dapat mengubah hanya beberapa pengaturan.
Secara default, konten apa pun di antara tag untuk kontrol khusus ditambahkan sebagai kontrol anak. Ini dapat dicegat dalam override AddParsedSubObject () untuk pemfilteran atau penguraian tambahan (misalnya, konten teks dalam LiteralControls):
Jika Anda memiliki ASP.NET menghasilkan umpan RSS, kadang-kadang akan menempatkan baris tambahan di bagian atas halaman. Ini tidak akan divalidasi dengan validator RSS umum. Anda dapat mengatasinya dengan menempatkan arahan halaman <@Page>di bagian bawah halaman.
Tidakkah Anda lebih baik menggunakan penangan .ASHX untuk menghasilkan umpan RSS?
Dan Diplo
Saya kira itu tergantung pada kompleksitas proyek. Tidak setiap orang memiliki kemampuan atau keterampilan untuk membuat dan menyusun penangan. Dalam halaman, asp.net bekerja dengan cukup baik untuk ini
Kevin Goff
1
Dan Anda dapat menggunakan sesuatu seperti <asp: Repeater> untuk menghasilkan item RSS dan melakukan trik lain (seperti menggunakan LogInView untuk menghapus beberapa item) yang jauh lebih baik daripada menulis string dari ASHX IMO
chakrit
LinqToXml + ASHX adalah caranya!
Carlos Muñoz
Ini berguna untuk lebih dari sekadar pembuatan umpan RSS. IIRC, HTML5 harus memiliki tag <! Doctype html> pada baris pertama di atas untuk memvalidasi dengan benar.
Roy Tinker
12
Sebelum ASP.NET v3.5 menambahkan rute Anda dapat membuat URL ramah Anda sendiri hanya dengan menulis HTTPModule ke dan menulis ulang permintaan di awal pipa halaman (seperti acara BeginRequest).
DotNetNuke memiliki HttpModule yang sangat bagus yang melakukan ini untuk url ramah mereka. Masih bermanfaat untuk mesin di mana Anda tidak dapat menggunakan .NET v3.5.
Jawaban:
Saat menguji, Anda dapat mengirim email ke folder di komputer Anda, bukan ke server SMTP. Letakkan ini di web.config Anda:
sumber
Jika Anda menempatkan file bernama app_offline.htm di root direktori aplikasi web, ASP.NET 2.0+ akan mematikan aplikasi dan menghentikan pemrosesan normal setiap permintaan masuk baru untuk aplikasi itu, hanya menampilkan konten app_offline.htm mengajukan semua permintaan baru .
Ini adalah cara tercepat dan termudah untuk menampilkan pemberitahuan "Situs Sementara Tidak Tersedia" Anda saat menggunakan kembali (atau memutar kembali) perubahan ke server Produksi.
Juga, seperti yang ditunjukkan oleh marxidad , pastikan Anda memiliki setidaknya 512 byte konten dalam file sehingga IE6 akan membuatnya dengan benar.
sumber
Ini akan ditangkap oleh ASP.NET yang akan mengembalikan halaman customErrors. Pelajari tentang ini di .NET Tip of the Day Post baru-baru ini
sumber
Ini yang terbaik. Tambahkan ini ke web.config Anda untuk kompilasi yang JAUH lebih cepat. Ini adalah posting 3.5SP1 melalui QFE ini .
Lewat sini :
sumber
HttpContext.Current akan selalu memberi Anda akses ke Permintaan / Respons / konteks konteks saat ini, bahkan ketika Anda tidak memiliki akses ke properti Halaman (misalnya, dari kelas pembantu yang ditambah secara longgar).
Anda dapat melanjutkan mengeksekusi kode pada halaman yang sama setelah mengalihkan pengguna ke yang lain dengan memanggil Response.Redirect ( url , false )
Anda tidak perlu file .ASPX jika semua yang Anda inginkan adalah Halaman yang dikompilasi (atau IHttpHandler ). Cukup atur jalur dan metode HTTP untuk menunjuk ke kelas di
<httpHandlers>
elemen dalam file web.config.Sebuah Halaman objek dapat diambil dari ASPX berkas pemrograman dengan menelepon PageParser.GetCompiledPageInstance (VirtualPath, aspxFileName, Konteks)
sumber
Mode ritel di tingkat machine.config:
Mengesampingkan pengaturan web.config untuk menegakkan debug ke false, mengaktifkan kesalahan khusus dan menonaktifkan penelusuran. Tidak lagi lupa mengubah atribut sebelum penerbitan - biarkan semuanya dikonfigurasi untuk pengembangan atau lingkungan pengujian dan perbarui pengaturan ritel produksi.
sumber
Mengaktifkan intellisense untuk MasterPages di halaman konten
saya yakin ini adalah hack yang sangat sedikit diketahui
Sebagian besar waktu Anda harus menggunakan metode findcontrol dan melemparkan kontrol di halaman master dari halaman konten ketika Anda ingin menggunakannya, arahan MasterType akan memungkinkan intellisense di studio visual setelah Anda melakukannya.
cukup tambahkan satu lagi arahan ke halaman
Jika Anda tidak ingin menggunakan Jalur Virtual dan gunakan nama kelas sebagai gantinya
Dapatkan artikel lengkapnya di sini
sumber
HttpContext.Items sebagai alat caching tingkat-permintaan
sumber
Dua hal menonjol di kepala saya:
1) Anda dapat menghidupkan dan mematikan Trace dari kode:
2) Anda dapat membangun beberapa halaman .aspx hanya menggunakan satu file "code-behind" yang dibagikan.
Buat satu file .cs kelas:
dan kemudian Anda dapat memiliki sejumlah halaman .aspx (setelah Anda menghapus .designer.cs dan .cs kode di belakang yang telah dihasilkan VS):
Anda dapat memiliki kontrol di ASPX yang tidak muncul di Class1, dan sebaliknya, tetapi Anda perlu mengingatkan untuk memeriksa kontrol Anda untuk nulls.
sumber
Kamu bisa memakai:
Untuk mendapatkan nilai kontrol SEBELUM kondisi tampilan diinisialisasi (Control.Text dll akan kosong pada saat ini).
Ini berguna untuk kode di Init.
sumber
WebMetode.
Anda dapat menggunakan panggilan balik ASP.NET AJAX ke metode web yang ditempatkan di halaman ASPX. Anda dapat menghias metode statis dengan atribut [WebMethod ()] dan [ScriptMethod ()]. Sebagai contoh:
Sekarang, di halaman ASPX Anda, Anda dapat melakukan ini:
Dan panggil metode sisi server Anda melalui JavaScript menggunakan:
sumber
Periksa untuk melihat apakah klien masih terhubung, sebelum memulai tugas yang sudah berjalan lama:
sumber
Satu fitur ASP.NET yang dikenal dan jarang digunakan adalah:
Pemetaan Tag
Ini jarang digunakan karena hanya ada situasi tertentu di mana Anda akan membutuhkannya, tetapi ketika Anda membutuhkannya, itu benar berguna.
Beberapa artikel tentang fitur tahu kecil ini:
Tag Pemetaan di ASP.NET
Menggunakan Tag Mapping di ASP.NET 2.0
dan dari artikel terakhir itu:
sumber
HttpModules . Arsitekturnya sangat elegan dan gila. Mungkin bukan fitur tersembunyi, tapi keren juga.
sumber
Anda dapat menggunakan Komentar ASP.NET dalam halaman .aspx untuk mengomentari seluruh bagian halaman termasuk kontrol server. Dan konten yang dikomentari tidak akan pernah dikirim ke klien.
sumber
Pembuat Ekspresi Kode
Markup sampel:
Keindahan sebenarnya dari pembuat ekspresi kode adalah bahwa Anda dapat menggunakan penyatuan data seperti ekspresi dalam situasi yang bukan penyatuan data. Anda juga bisa membuat Pembuat Ekspresi lain yang melakukan fungsi lainnya.
web.config:
Kelas cs yang membuat semuanya terjadi:
sumber
<%= /*code*/ %>
?Penggunaan jenis file ASHX:
Jika Anda ingin hanya output beberapa html atau xml dasar tanpa melalui halaman event handler maka Anda dapat mengimplementasikan HttpModule secara sederhana
Beri nama halaman tersebut sebagai SomeHandlerPage.ashx dan cukup masukkan kode di bawah ini (hanya satu baris) di dalamnya
Lalu file kode
sumber
Mengatur Properti Kontrol Server Berdasarkan pada Browser Target dan banyak lagi .
Yang agak mengejutkan saya.
sumber
System.Web.VirtualPathUtility
sumber
Saya bekerja pada aplikasi asp.net yang melalui audit keamanan oleh perusahaan keamanan terkemuka dan saya belajar trik mudah ini untuk mencegah kerentanan keamanan yang kurang diketahui tetapi penting.
Penjelasan di bawah ini dari: http://www.guidanceshare.com/wiki/ASP.NET_2.0_Security_Guidelines_-_Parameter_Manipulation#Consider_Using_Page.ViewStateUserKey_to_Counter_One-Click_Attacks
Pertimbangkan menggunakan Page.ViewStateUserKey untuk melawan serangan satu-klik. Jika Anda mengautentikasi penelepon Anda dan menggunakan ViewState, setel properti Page.ViewStateUserKey di pawang event Page_Init untuk mencegah serangan satu-klik.
Tetapkan properti ke nilai yang Anda tahu unik untuk setiap pengguna, seperti ID sesi, nama pengguna, atau pengidentifikasi pengguna.
Serangan satu klik terjadi ketika penyerang membuat halaman Web (.htm atau .aspx) yang berisi bidang formulir tersembunyi bernama __VIEWSTATE yang sudah diisi dengan data ViewState. ViewState dapat dihasilkan dari halaman yang penyerang sebelumnya buat, seperti halaman keranjang belanja dengan 100 item. Penyerang memikat pengguna yang tidak menaruh curiga untuk meramban ke halaman, dan kemudian penyerang menyebabkan halaman dikirim ke server di mana kondisi tampilan yang valid. Server tidak memiliki cara untuk mengetahui bahwa kondisi tampilan berasal dari penyerang. Validasi ViewState dan HMACs tidak melawan serangan ini karena ViewState valid dan halaman dieksekusi di bawah konteks keamanan pengguna.
Dengan mengatur properti ViewStateUserKey, ketika penyerang meramban halaman untuk membuat ViewState, properti diinisialisasi dengan namanya. Ketika pengguna yang sah mengirimkan halaman ke server, itu diinisialisasi dengan nama penyerang. Akibatnya, pemeriksaan HMAC ViewState gagal dan pengecualian dihasilkan.
sumber
base.OnInit(e);
jika menggunakanAutoEventWireup="true"
untuk halaman tersebut.HttpContext.Current.IsDebuggingEnabled
Ini bagus untuk menentukan skrip mana yang akan dihasilkan (min atau versi lengkap) atau apa pun yang Anda inginkan di dev, tetapi tidak langsung.
sumber
Termasuk dalam ASP.NET 3.5 SP1:
sumber
Properti DefaultButton di Panel.
Ini menetapkan tombol default untuk panel tertentu.
sumber
ScottGu memiliki banyak trik di http://weblogs.asp.net/scottgu/archive/2006/04/03/441787.aspx
sumber
Menggunakan configSource untuk membagi file konfigurasi.
Anda dapat menggunakan atribut configSource di file web.config untuk mendorong elemen konfigurasi ke file .config lainnya, misalnya, alih-alih:
... Anda dapat menyimpan seluruh bagian pengaturan aplikasi di file konfigurasi lain. Inilah yang baru
web.config
:The
myAppSettings.config
File:Ini cukup berguna untuk skenario di mana Anda menyebarkan aplikasi ke pelanggan dan Anda tidak ingin mereka mengganggu file web.config itu sendiri dan hanya ingin mereka dapat mengubah hanya beberapa pengaturan.
ref: http://weblogs.asp.net/fmarguerie/archive/2007/04/26/using-configsource-to-split-configuration-files.aspx
sumber
Atribut MaintainScrollPositionOnPostback dalam Halaman direktif. Ini digunakan untuk mempertahankan posisi gulir halaman aspx di seluruh postback.
sumber
HttpContext.IsCustomErrorEnabled adalah fitur keren. Saya telah menemukan itu berguna lebih dari sekali. Ini ada posting singkat tentang itu.
sumber
Secara default, konten apa pun di antara tag untuk kontrol khusus ditambahkan sebagai kontrol anak. Ini dapat dicegat dalam override AddParsedSubObject () untuk pemfilteran atau penguraian tambahan (misalnya, konten teks dalam LiteralControls):
...
sumber
Jika Anda memiliki ASP.NET menghasilkan umpan RSS, kadang-kadang akan menempatkan baris tambahan di bagian atas halaman. Ini tidak akan divalidasi dengan validator RSS umum. Anda dapat mengatasinya dengan menempatkan arahan halaman
<@Page>
di bagian bawah halaman.sumber
Sebelum ASP.NET v3.5 menambahkan rute Anda dapat membuat URL ramah Anda sendiri hanya dengan menulis HTTPModule ke dan menulis ulang permintaan di awal pipa halaman (seperti acara BeginRequest).
Url seperti http: // servername / halaman / Param1 / SomeParams1 / Param2 / SomeParams2 akan dipetakan ke halaman lain seperti di bawah ini (sering menggunakan ekspresi reguler).
DotNetNuke memiliki HttpModule yang sangat bagus yang melakukan ini untuk url ramah mereka. Masih bermanfaat untuk mesin di mana Anda tidak dapat menggunakan .NET v3.5.
sumber