Penjelasan rinci Web.config + optimasi asp.net
Penulis:Eve Cole
Waktu Pembaruan:2009-07-01 16:44:14
1. Memahami file Web.config
File Web.config adalah file teks xml, yang digunakan untuk menyimpan informasi konfigurasi aplikasi Web asp.NET (seperti metode otentikasi yang paling umum digunakan untuk mengatur aplikasi Web asp.NET). langkah aplikasi. Saat Anda membuat aplikasi Web baru melalui .NET, file Web.config default secara otomatis dibuat di direktori root secara default, termasuk pengaturan konfigurasi default, dan semua subdirektori mewarisi pengaturan konfigurasinya. Jika Anda ingin mengubah pengaturan konfigurasi subdirektori, Anda dapat membuat file Web.config baru di subdirektori tersebut. Ini dapat memberikan informasi konfigurasi selain informasi konfigurasi yang diwarisi dari direktori induk, dan juga dapat mengesampingkan atau mengubah pengaturan yang ditentukan dalam direktori induk.
(1).Web.Config disimpan dalam spesifikasi file xml, dan file konfigurasi dibagi ke dalam format berikut
1. Karakteristik deklarasi pengendali bagian konfigurasi: terletak di bagian atas file konfigurasi dan terdapat dalam tag <configSections>.
2. Fitur konfigurasi aplikasi khusus: Terletak di <appSetting>. Anda dapat menentukan informasi seperti pengaturan konstan global untuk aplikasi.
3. Fitur pengaturan bagian konfigurasi: Terletak di bagian <system.Web>, ini mengontrol perilaku runtime asp.net.
4. Fitur grup bagian konfigurasi: Dengan menggunakan tag <sectionGroup>, Anda dapat menyesuaikan pengelompokan dan menempatkannya di dalam <configSections> atau di dalam tag <sectionGroup> lainnya.
(2). Setiap bagian dari bagian konfigurasi
1.<konfigurasi> elemen root bagian, bagian lain ada di dalamnya.
2. Bagian <appSetting> Bagian ini digunakan untuk menentukan pengaturan aplikasi. Untuk beberapa pengaturan yang tidak pasti, pengguna juga dapat mengatur penggunaannya sendiri sesuai dengan situasi sebenarnya:
I.<Pengaturan Aplikasi>
<tambahkan key="Koneksi" value="server=192.168.85.66;userid=sa;password=;database=Info;"/>
<Pengaturan Aplikasi>
Konstanta string koneksi ditentukan, dan string koneksi dapat dimodifikasi dalam aplikasi sebenarnya tanpa mengubah kode program.
II.<Pengaturan Aplikasi>
<add key="ErrPage" value="Error.aspx"/><appSettings> mendefinisikan halaman pengalihan kesalahan.
3.format bagian<kompilasi>:
<kompilasi
Bahasa default="c#"
debug="benar"
/>
I.bahasa default: Tentukan bahasa kode latar belakang, Anda dapat memilih dua bahasa: c# dan vb.net.
IIdebug: Jika benar, debugging aspx dimulai; jika salah, debugging aspx tidak dimulai, sehingga meningkatkan kinerja aplikasi saat sedang berjalan. Umumnya, pemrogram menyetelnya ke true saat mengembangkan dan menyetelnya ke false saat menyerahkannya kepada pelanggan.
4.format bagian <customErrors>:
<kesalahan khusus
mode="Hanya Jarak Jauh"
defaultRedirect="kesalahan.aspx"
<kesalahan statusCode="440" redirect="err440page.aspx"/>
<kesalahan statusCode="500" redirect="err500Page.aspx"/>
/>
I.mode: Memiliki 3 status: Aktif, Nonaktif, dan RemoteOnly. Aktif berarti informasi yang disesuaikan selalu ditampilkan; Mati berarti informasi kesalahan asp.net terperinci selalu ditampilkan; RemoteOnly berarti informasi yang disesuaikan hanya ditampilkan untuk pengguna yang tidak berjalan di server web lokal.
II.defaultRedirect: Alamat URL yang digunakan untuk mengalihkan ketika terjadi kesalahan Opsional
III.statusCode: Menunjukkan kode status kesalahan, menunjukkan status kesalahan tertentu.
IV. pengalihan: Kesalahan URL yang dialihkan.
5.format bagian<globalisasi>:
<globalisasi
permintaanEncoding="utf-8"
responEncoding="utf-8"
pengkodean file="utf-8"
/>
I.requestEncoding: Digunakan untuk memeriksa pengkodean setiap permintaan yang masuk.
II.responseEncoding: digunakan untuk memeriksa pengkodean konten dari respons yang dikirim kembali.
III.fileEncoding: digunakan untuk memeriksa pengkodean default untuk aspx, asax dan parsing file lainnya.
6.format bagian<sessionState>:
<sessionState
mode="DalamProc"
stateConnectionString="tcpip=127.0.0.1:42424"
sqlConnectionString="sumber data=127.0.0.1;Trusted_Connection=ya"
tanpa cookie="salah"
batas waktu="20"
/>
I.mode: Dibagi menjadi status off, Inproc, StateServer, SqlServer
mode = InProc disimpan dalam proses. Fitur: memiliki kinerja terbaik dan kecepatan tercepat, tetapi tidak dapat dibagikan ke beberapa server. mode = "StateServer" disimpan di server negara. Fitur: Ketika informasi sesi pengguna perlu dipertahankan server, Gunakan metode ini. Namun, informasi disimpan di server negara. Setelah server negara gagal, informasi akan hilang. Mode = "SqlServer" disimpan di server sql. Fitur: Beban kerja akan menjadi lebih besar, tetapi informasi tidak akan hilang.
II.stateConnectionString: Tentukan nama server tempat aplikasi asp.net menyimpan status sesi jarak jauh. Defaultnya adalah mesin lokal.
III.sqlConnectionString: Saat menggunakan database status sesi, atur string koneksi di sini
IV. Tanpa Cookie: Jika disetel ke true, artinya status sesi cookie tidak digunakan untuk mengidentifikasi pelanggan, sebaliknya yang berlaku adalah sebaliknya.
V. TimeOut: Digunakan untuk menentukan waktu penyimpanan status sesi. Jika batas waktu terlampaui, sesi akan dihentikan secara otomatis.
7.format bagian<otentikasi>:
<mode autentikasi="Formulir">
<forms name=".ASPXUSERDEMO" loginUrl="Login.aspx" proteksi="Semua" timeout="30"/>
</otentikasi>
<otorisasi>
<menolak pengguna="?"/>
</otorisasi>
I.Windows: Gunakan metode otentikasi IIS
II.Forms: Menggunakan validasi berbasis formulir
III.Passport: Gunakan mode verifikasi cookie Paspor
IV.None: tidak menggunakan metode verifikasi apa pun. Arti dari atribut node Formulir yang tertanam di dalamnya:
I.Name: Menentukan nama cookie HTTP yang digunakan untuk menyelesaikan otentikasi.
II.LoginUrl: URL halaman yang dialihkan jika verifikasi gagal atau waktu habis, biasanya halaman login, memungkinkan pengguna untuk login lagi.
III.Perlindungan: Tentukan metode perlindungan data cookie.
Dapat diatur ke: Semua Tidak Ada Validasi Enkripsi Empat metode perlindungan
a.Semua berarti mengenkripsi data dan melakukan verifikasi keabsahan dengan dua cara.
b.Tidak ada berarti cookie tidak dilindungi.
c. Enkripsi berarti mengenkripsi konten Cookie
d. Validasi berarti memverifikasi keabsahan konten Cookie
IV. TimeOut: Tentukan waktu kedaluwarsa cookie. Masuk lagi setelah batas waktu.
Modifikasi pada file Web.config saat runtime dapat diterapkan tanpa memulai ulang layanan (Catatan: Pengecualian untuk bagian <processModel>). Tentu saja file Web.config dapat diperluas. Anda dapat menyesuaikan parameter konfigurasi baru dan menulis penangan bagian konfigurasi untuk menanganinya.
File konfigurasi web.config (pengaturan konfigurasi default) harus berisi semua kode berikut
<konfigurasi>
<sistem.web>
Dan
</sistem.web>
</konfigurasi>
Untuk tujuan pembelajaran, contoh berikut menghilangkan tag xml ini.
1. Peran bagian <authentication>: mengkonfigurasi dukungan otentikasi asp.NET (empat jenis: Windows, Forms, PassPort, dan None). Elemen ini hanya dapat dideklarasikan di tingkat komputer, situs, atau aplikasi. Elemen <authentication> harus digunakan dengan bagian <authorization>.
Contoh:
Contoh berikut adalah situs konfigurasi otentikasi berbasis formulir. Ketika pengguna yang tidak login mengakses halaman web yang memerlukan otentikasi, halaman web secara otomatis melompat ke halaman web login.
<mode autentikasi="Formulir" >
<formulir loginUrl="logon.aspx" name=".FormsAuthCookie"/>
</otentikasi>
Elemen loginUrl mewakili nama halaman web login, dan nama mewakili nama cookie.
2. Peran bagian <otorisasi>: mengontrol akses klien ke sumber daya URL (seperti mengizinkan pengguna anonim untuk mengakses). Elemen ini dapat dideklarasikan di level mana pun (komputer, situs, aplikasi, subdirektori, atau halaman). Diperlukan bersama dengan bagian <authentication>.
Contoh: Contoh berikut menonaktifkan akses ke pengguna anonim
<otorisasi>
<menolak pengguna="?"/>
</otorisasi>
Catatan: Anda dapat menggunakan user.identity.name untuk mendapatkan nama pengguna yang diautentikasi saat ini; Anda dapat menggunakan metode web.Security.FormsAuthentication.RedirectFromLoginPage untuk mengarahkan pengguna yang diautentikasi ke halaman yang baru saja diminta oleh pengguna
3. Peran bagian <kompilasi>: mengkonfigurasi semua pengaturan kompilasi yang digunakan oleh asp.NET. Atribut debug default adalah "Benar". Ini harus disetel ke False setelah program dikompilasi dan dikirimkan untuk digunakan (detailnya dijelaskan dalam file Web.config, dan contohnya dihilangkan di sini)
4.<kesalahan khusus>
Peran: Memberikan informasi tentang pesan kesalahan khusus untuk aplikasi asp.NET. Ini tidak berlaku untuk kesalahan yang terjadi di layanan web xml.
Contoh: Saat terjadi kesalahan, lompat ke halaman kesalahan khusus.
<customErrors defaultRedirect="ErrorPage.aspx" mode="RemoteOnly">
</kesalahan khusus>
Elemen defaultRedirect mewakili nama halaman web kesalahan yang disesuaikan. Elemen mode menunjukkan: menampilkan informasi khusus (ramah) kepada pengguna yang tidak berjalan di server Web lokal.
5. Peran bagian <httpRuntime>: mengkonfigurasi pengaturan runtime HTTP asp.NET. Bagian ini dapat dideklarasikan di tingkat komputer, situs, aplikasi, dan subdirektori.
Contoh: Kontrol ukuran maksimum file unggahan pengguna hingga 4M, waktu maksimum hingga 60 detik, dan jumlah permintaan maksimum hingga 100
<httpRuntime maxRequestLength="4096"executionTimeout="60" appRequestQueueLimit="100"/>
6. <halaman>
Peran: Mengidentifikasi pengaturan konfigurasi khusus halaman (seperti apakah akan mengaktifkan status sesi, status tampilan, apakah akan mendeteksi input pengguna, dll.). <pages> dapat dideklarasikan di tingkat komputer, situs, aplikasi, dan subdirektori.
Contoh: Jangan mendeteksi apakah ada data yang berpotensi berbahaya dalam konten yang dimasukkan oleh pengguna di browser (Catatan: Item ini terdeteksi secara default. Jika Anda menggunakan non-deteksi, Anda harus menyandikan atau memverifikasi masukan pengguna). klien Status tampilan terenkripsi diperiksa ketika halaman diposting kembali untuk memverifikasi bahwa status tampilan belum diubah di sisi klien. (Catatan: Item ini tidak diverifikasi secara default)
<pages buffer="benar" aktifkanViewStateMac="benar" validasiRequest="salah"/>
7. <keadaan sesi>
Fungsi: Konfigurasikan pengaturan status sesi untuk aplikasi saat ini (seperti mengatur apakah akan mengaktifkan status sesi dan di mana menyimpan status sesi).
Contoh:
<sessionState mode="InProc" cookieless="true" timeout="20"/>
</sessionState>
Catatan:
mode="InProc" berarti: menyimpan status sesi secara lokal (Anda juga dapat memilih untuk menyimpannya di server jarak jauh atau server SAL atau menonaktifkan status sesi)
cookieless="true" berarti: mengaktifkan status sesi jika browser pengguna tidak mendukung cookie (defaultnya adalah False)
timeout="20" berarti: jumlah menit sesi dapat menganggur
8. <jejak>
Fungsi: Konfigurasikan layanan pelacakan asp.NET, terutama digunakan untuk pengujian program guna menentukan di mana kesalahan terjadi.
Contoh: Berikut ini adalah konfigurasi default di Web.config:
<trace diaktifkan="false" requestLimit="10" pageOutput="false" traceMode="SortByTime" localOnly="true" />
Catatan:
diaktifkan="false" berarti tidak mengaktifkan pelacakan;
requestLimit="10" menentukan jumlah permintaan pelacakan yang disimpan di server
pageOutput="false" berarti keluaran penelusuran hanya dapat diakses melalui utilitas penelusuran;
traceMode="SortByTime" menunjukkan bahwa informasi jejak ditampilkan sesuai urutan pemrosesan jejak.
localOnly="true" berarti penampil jejak (trace.axd) hanya digunakan untuk server Web host. Proses bagian konfigurasi file Web.config kustom dibagi menjadi dua langkah.
1. Deklarasikan nama bagian konfigurasi dan nama kelas .NET Framework yang menangani data konfigurasi di bagian antara tag <configSections> dan </configSections> di bagian atas file konfigurasi.
2. Buat pengaturan konfigurasi sebenarnya untuk bagian yang dideklarasikan setelah area <configSections>.
Contoh: Buat bagian untuk menyimpan string koneksi database
<konfigurasi>
<configBagian>
<section name="appSettings" type="System.Configuration.NameValueFileSectionHandler, Sistem, Versi=1.0.3300.0, Budaya=netral, PublicKeyToken=b77a5c561934e089"/>
</configBagian>
<Pengaturan Aplikasi>
<tambahkan key="scon" value="server=a;database=northwind;uid=sa;pwd=123"/>
</Pengaturan Aplikasi>
<sistem.web>
...
</sistem.web>
</konfigurasi>
Mengakses file Web.config Anda dapat mengakses file Web.config dengan menggunakan kumpulan string statis ConfigurationSettings.AppSettings Contoh: Dapatkan string koneksi yang dibuat pada contoh di atas. Misalnya:
string statis yang dilindungi Isdebug = ConfigurationSettings.AppSettings["debug"]
2. Penjelasan detail konfigurasi sesi di web.config Setelah membuka file konfigurasi Web.config suatu aplikasi, kita akan menemukan paragraf berikut:
< status sesi
mode="DalamProc"
stateConnectionString="tcpip=127.0.0.1:42424"
sqlConnectionString="sumber data=127.0.0.1;Trusted_Connection=ya"
tanpa cookie="salah"
batas waktu="20"
/>
Bagian ini mengonfigurasi cara aplikasi menyimpan informasi sesi. Berbagai operasi kami di bawah ini terutama difokuskan pada konfigurasi ini. Mari kita lihat dulu maksud dari konten yang terdapat dalam konfigurasi ini. Sintaks dari node sessionState adalah sebagai berikut:
< sessionState mode="Mati|InProc|StateServer|SQLServer"
tanpa cookie="benar|salah"
batas waktu = "jumlah menit"
stateConnectionString="tcpip=server:port"
sqlConnectionString="string koneksi sql"
stateNetworkTimeout="jumlah detik"
/>
Atribut yang diperlukan adalah: deskripsi opsi atribut
mode mengatur tempat menyimpan informasi sesi
Ø Mati diatur untuk tidak menggunakan fungsi sesi.
Ø InProc diatur untuk menyimpan sesi dalam proses, yang merupakan metode penyimpanan di asp.
Ø StateServer diatur untuk menyimpan sesi dalam layanan negara independen.
Ø Pengaturan SQLServer menyimpan sesi di sql server.
Atribut opsional adalah: deskripsi opsi atribut
Ø kumpulan tanpa cookie tempat informasi sesi klien disimpan,
Ø mendatang menggunakan mode tanpa cookie,
Ø salah Gunakan mode Cookie, ini adalah nilai default,
Ø batas waktu menetapkan jumlah menit setelah server secara otomatis memberikan informasi sesi.
stateConnectionString menyetel nama server dan nomor port yang digunakan saat menyimpan informasi sesi di layanan negara, misalnya: "tcpip=127.0.0.1:42424". Atribut ini diperlukan bila nilai modenya adalah StateServer.
sqlConnectionString menyetel string koneksi saat menyambung ke server sql. Misalnya "sumber data= localhost;Keamanan Terintegrasi=SSPI;Katalog Awal=northwind". Atribut ini diperlukan bila nilai modenya adalah SQLServer.
stateNetworkTimeout menetapkan jumlah detik menganggur setelah koneksi TCP/IP antara server Web dan server yang menyimpan informasi status terputus saat menggunakan mode StateServer untuk menyimpan status sesi. Nilai defaultnya adalah 10 detik.
Penyimpanan status sesi klien di asp.NET ditunjukkan pada pengenalan model sesi kami di atas. Anda dapat menemukan bahwa status sesi harus disimpan di dua tempat, yaitu klien dan server. Klien hanya bertanggung jawab untuk menyimpan SessionID dari situs web terkait, sementara informasi sesi lainnya disimpan di sisi server. Di asp, SessionID klien sebenarnya disimpan dalam bentuk cookie. Jika pengguna memilih untuk menonaktifkan cookie di pengaturan browser, maka ia tidak akan dapat menikmati kenyamanan sesi, dan bahkan mungkin tidak dapat mengakses situs web tertentu. Untuk mengatasi masalah di atas, metode penyimpanan informasi sesi klien di asp.NET dibagi menjadi dua jenis: Cookie dan Tanpa Cookie.
Di asp.NET, secara default, cookie masih digunakan untuk menyimpan informasi sesi di klien. Jika kita ingin menggunakan Cookieless untuk menyimpan informasi sesi pada klien, caranya adalah sebagai berikut:
Temukan direktori root aplikasi web saat ini, buka file Web.Config, dan temukan paragraf berikut:
< status sesi
mode="DalamProc"
stateConnectionString="tcpip=127.0.0.1:42424"
sqlConnectionString="sumber data=127.0.0.1;Trusted_Connection=ya"
tanpa cookie="salah"
batas waktu="20"
/>
Cookieless="false" pada paragraf ini diubah menjadi: cookieless="true". Dengan cara ini, informasi sesi klien tidak lagi disimpan menggunakan cookie, tetapi disimpan melalui URL. Tutup IE saat ini, buka IE baru, dan kunjungi kembali aplikasi web tadi. Anda akan melihat sesuatu seperti berikut:
Diantaranya, yang ditandai dengan huruf tebal di http://localhost/MyTestApplication/(ulqsek45heu3ic2a5zgdl245 )/default.aspx adalah ID sesi klien. Perhatikan bahwa informasi ini secara otomatis ditambahkan oleh IIS dan tidak akan mempengaruhi koneksi normal sebelumnya.
Persiapan untuk menyimpan status sesi di sisi server di asp.NET:
Agar Anda dapat merasakan fenomena eksperimental dengan lebih baik, Anda bisa membuat halaman bernama SessionState.aspx, lalu menambahkan kode berikut ke <body></body>.
<scriptrunat="server">
Sub Session_Add(pengirim Sebagai Objek, dan Sebagai EventArgs)
sesi("Sesi Saya") = teks1.Nilai
span1.InnerHtml = "Data sesi diperbarui! < P>Sesi Anda berisi: < font color=red>" & session("MySession"). ToString() & "< /font>"
Akhiri Sub
Sub CheckSession (pengirim Sebagai Objek, eAs EventArgs)
Jika (Sesi("Sesi Saya")Tidak Ada) Lalu
span1.InnerHtml = "TIDAK ADA, DATA sesi HILANG!"
Kalau tidak
span1.InnerHtml = "Sesi Anda berisi: < font color= red>" & session("MySession").ToString() & "< /font>"
Akhiri Jika
Akhiri Sub
</skrip>
<formrunat="server"id="Form2">
< inputid="teks1"type="teks"runat="server"nama="teks1">
< inputtype="kirim"runat="server"OnServerClick="Session_Add"
value="Tambahkan ke Status sesi " id="Submit1"name="Submit1">
< inputtype="kirim"runat="server"OnServerClick="CheckSession"
value=" Lihat Status sesi " id="Submit2"name="Submit2">
< /bentuk>
< ukuran jam = "1">
< fontize="6">< spanid="span1"runat="server" />< /font>
Halaman SessionState.aspx dapat digunakan untuk menguji apakah informasi sesi hilang di server saat ini.
Menyimpan informasi sesi server dalam proses Mari kita kembali ke paragraf sebelumnya dari file Web.config:
< status sesi
mode="DalamProc"
stateConnectionString="tcpip=127.0.0.1:42424"
sqlConnectionString="sumber data=127.0.0.1;Trusted_Connection=ya"
tanpa cookie="salah"
batas waktu="20"
/>
Jika nilai mode adalah InProc, ini menunjukkan bahwa server menggunakan mode ini.
Cara ini sama dengan mode sebelumnya di asp yaitu server menyimpan informasi sesi dalam proses IIS. Ketika IIS dimatikan dan dimulai ulang, informasi ini akan hilang. Namun mode ini juga memiliki keunggulan terbesarnya sendiri, yaitu performa tertinggi. Karena semua informasi sesi disimpan dalam proses IIS, IIS dapat dengan cepat mengakses informasi ini Kinerja mode ini lebih cepat daripada menyimpan informasi sesi di luar proses atau menyimpan banyak informasi sesi di SQL Server. Mode ini juga merupakan cara default asp.NET.
Oke, sekarang mari kita lakukan percobaan. Buka halaman SessionState.aspx sekarang dan masukkan beberapa karakter untuk menyimpannya dalam sesi. Kalau begitu, mari kita mulai ulang IIS. Perhatikan bahwa ini bukan untuk menghentikan dan memulai ulang situs saat ini, tetapi mengklik kanan node dengan nama mesin lokal di IIS dan memilih Mulai Ulang IIS. (Saya rasa ketika saya menggunakan NT4, saya harus me-restart komputer untuk me-restart IIS. Microsoft benar-benar @#$%^&) Kembali ke halaman SessionState.aspx, periksa informasi sesi tadi, dan temukan bahwa informasinya telah hilang.
Menyimpan informasi sesi server di luar proses Pertama, mari kita buka alat manajemen -> Layanan, temukan layanan bernama: asp.NET State Service, dan mulai. Faktanya, layanan ini memulai proses untuk menyimpan informasi sesi. Setelah memulai layanan ini, Anda dapat melihat proses bernama aspnet_state.exe dari Windows Task Manager->Processes.
Kemudian, kembali ke paragraf di atas pada file Web.config dan ubah nilai mode menjadi StateServer. Setelah menyimpan file, buka kembali IE, buka halaman SessionState.aspx, dan simpan beberapa informasi ke sesi tersebut. Pada saat ini, mari kita restart IIS dan kembali ke halaman SessionState.aspx untuk memeriksa informasi sesi sekarang dan menemukan bahwa informasi tersebut tidak hilang.
Faktanya, cara menyimpan informasi sesi di luar proses ini tidak hanya berarti bahwa informasi tersebut dapat disimpan di luar proses mesin lokal, tetapi juga informasi sesi dapat disimpan dalam proses server lain. Saat ini, Anda tidak hanya perlu mengubah nilai mode ke StateServer, tetapi Anda juga perlu mengonfigurasi parameter terkait di stateConnectionString. Misalnya perhitungan Anda adalah 192.168.0.1 Jika Anda ingin menyimpan sesi dalam proses komputer dengan alamat IP 192.168.0.2, Anda perlu mengaturnya seperti ini: stateConnectionString="tcpip=192.168.0.2:42424". Tentunya jangan lupa untuk menginstal .NET Framework di komputer 192.168.0.2 dan memulai layanan asp.NET State Services.
Menyimpan informasi sesi server di sql server Pertama, mari kita melakukan beberapa pekerjaan persiapan. Mulai layanan proxy server sql dan server sql. Jalankan file skrip bernama InstallSqlState.sql di server sql. File skrip ini akan membuat database di SQL Server khusus untuk menyimpan informasi sesi, dan pekerjaan agen SQL Server yang memelihara database informasi sesi. Kita dapat menemukan file itu di jalur berikut:
[drive sistem]winntMicrosoft.NETFramework[versi]
Kemudian buka penganalisis kueri, sambungkan ke server sql, buka file tadi dan jalankan. Tunggu beberapa saat dan database serta pekerjaan akan dibuat. Saat ini, Anda dapat membuka Enterprise Manager dan melihat bahwa database baru bernama ASPState telah ditambahkan. Namun hanya ada beberapa prosedur tersimpan di database ini, dan tidak ada tabel pengguna. Faktanya, informasi sesi disimpan dalam tabel ASPStateTempSessions dari database tempdb, dan tabel ASPStateTempApplications lainnya menyimpan informasi objek aplikasi di asp. Kedua tabel ini juga dibuat oleh skrip tadi. Selain itu, periksa Manajemen->Agen server SQL->Pekerjaan dan temukan bahwa ada juga pekerjaan tambahan yang disebut ASPState_Job_DeleteExpiredSessions. Pekerjaan ini sebenarnya menghapus informasi sesi yang kedaluwarsa dari tabel ASPStateTempSessions setiap menit.
Selanjutnya, kita kembali ke file Web.config dan mengubah nilai mode menjadi SQLServer. Perhatikan bahwa Anda juga perlu mengubah nilai sqlConnectionString secara bersamaan. Formatnya adalah:
sqlConnectionString="sumber data=localhost; Keamanan Terintegrasi=SSPI;"
Sumber data mengacu pada alamat IP server server SQL. Jika server SQL dan IIS adalah mesin yang sama, tulis saja 127.0.0.1. Keamanan Terintegrasi=SSPI berarti menggunakan otentikasi terintegrasi Windows. Dengan cara ini, akses database akan dilakukan sebagai asp.NET. Melalui konfigurasi ini, Anda bisa mendapatkan keamanan yang lebih baik daripada metode otentikasi server sql menggunakan userid=sa;password=password sex . Tentu saja, jika server sql berjalan di komputer lain, Anda mungkin perlu menjaga konsistensi otentikasi di kedua sisi melalui domain Direktori Aktif.
Sekali lagi, mari kita lakukan percobaan. Tambahkan informasi sesi ke SessionState.aspx, dan kemudian temukan bahwa informasi sesi sudah ada di server SQL. Bahkan jika Anda me-restart komputer, informasi sesi tidak akan hilang. Sekarang, Anda telah sepenuhnya melihat seperti apa informasi sesi, dan informasi tersebut disimpan di SQL Server. Apa yang dapat Anda lakukan bergantung pada kinerja Anda.
Ringkasan 3. Pengaturan umum otentikasi formulir asp.net
Pengaturan umum untuk otentikasi formulir asp.net:
1: Di web.config, tambahkan otentikasi formulir;
<mode autentikasi="Formulir">
<forms name="auth" loginUrl="index.aspx" timeout="30"></forms>
</otentikasi>
<otorisasi>
<menolak pengguna="?" />
</otorisasi>
2: Jika ada halaman pendaftaran, pengguna anonim harus diizinkan untuk memanggil halaman pendaftaran untuk mendaftar;
Kode berikut harus berada di antara <configuration><system.web> dan tidak boleh disertakan di antara <system.web>..</system.web>;
----------------Menunjukkan bahwa pengguna anonim diperbolehkan mengakses halaman userReg.aspx.
<jalur lokasi="userReg.aspx">
<sistem.web>
<otorisasi>
<izinkan pengguna="?" />
</otorisasi>
</sistem.web>
</lokasi>
3. Setelah login berhasil, tiket verifikasi identitas harus dibuat untuk menunjukkan bahwa pengguna sah yang diautentikasi telah lulus;
jika (login berhasil)
System.Web.Security.FormsAuthentication.SetAuthCookie(nama pengguna, false);
4. Akses file Web.config. Anda dapat mengakses file Web.config dengan menggunakan kumpulan string statis ConfigurationSettings.AppSettings. Misalnya:
string statis yang dilindungi Isdebug = ConfigurationSettings.AppSettings["scon"]
optimasi kinerja asp.Net.
(1).Pilih metode penyimpanan status sesi
Konfigurasikan dalam file Webconfig:
<mode StatusSesi="???" stateConnectionString="tcpip=127.0.0.1:42424"
sqlConnectionString="sumber data=127.0.0.1;Trusted_Connection=ya"
tanpa cookie="false" batas waktu="20"/>
ASP.NET memiliki tiga cara untuk menyimpan informasi status sesi:
1. Disimpan dalam proses: atribut mode = InProc
Fitur: Ini memiliki kinerja terbaik dan kecepatan tercepat, tetapi tidak dapat dibagikan ke banyak server.
2. Disimpan di server negara: atribut mode = "StateServer"
Fitur: Gunakan metode ini ketika informasi sesi pengguna perlu dipertahankan di seluruh server.
Tetapi informasi tersebut disimpan di server negara, dan jika server negara gagal, informasi tersebut akan hilang
3. Disimpan di server sql: atribut mode="SqlServer"
Fitur: Beban kerja akan menjadi lebih besar, namun informasi tidak akan hilang.
Satu hal lagi:
I. Karena beberapa halaman tidak memerlukan status sesi, status sesi dapat dinonaktifkan:
Kodenya adalah sebagai berikut: <%@ Page EnableSessionState="false" %>
II. Jika halaman perlu mengakses variabel sesi tetapi tidak diperbolehkan untuk mengubahnya, Anda dapat mengatur status sesi halaman menjadi hanya-baca:
Kodenya adalah sebagai berikut: <%@ Page EnableSessionState="false" %>
Saat menggunakannya, Anda dapat memilih metode tertentu sesuai dengan situasi spesifik
(2).Gunakan Halaman.IsPostBack
Page.IsPostBack menunjukkan apakah dikembalikan dari klien. Saat dijalankan untuk pertama kali, nilainya tidak dikembalikan
Bernilai salah, ketika peristiwa pada laman dipicu atau laman disegarkan, nilai Page.IsPostBack menjadi benar karena merupakan postback;
Umumnya digunakan dalam: Metode Page_Load:
private void Page_Load(Pengirim objek,EventArgs e)
{
if(!Halaman.IsPostBack)
{
....; //Kode untuk menginisialisasi halaman. Kode-kode ini dijalankan ketika halaman diinisialisasi untuk pertama kalinya, dan ketika diposting kembali untuk kedua kalinya,
//Tidak akan dieksekusi lagi. Meningkatkan efisiensi.
}
}
Seringkali IsPostBack harus digunakan karena beberapa kontrol perlu mempertahankan statusnya setelah inisialisasi.
Misalnya: DropDownList, jika diinisialisasi setiap saat, opsi apa pun yang dipilih pengguna, maka akan diinisialisasi ke nilai default.
(3). Hindari menggunakan kontrol server
1. Untuk informasi tampilan statis umum, cobalah untuk tidak menggunakan kontrol sisi server untuk menampilkannya. Karena kontrol sisi server perlu dikirim kembali ke server untuk dieksekusi.
Ini akan mengurangi efisiensi eksekusi program. Umumnya, ini dapat ditampilkan dengan <DIV>.
Jika kontrol sisi server digunakan, menghapus: runat="server" juga akan meningkatkan efisiensi.
2. Nonaktifkan tampilan status kontrol sisi server. Beberapa kontrol tidak perlu mempertahankan statusnya. Anda dapat mengatur propertinya: EnableViewState=false;
Jika seluruh kontrol halaman tidak perlu mempertahankan tampilan status, Anda dapat menyetel tampilan status seluruh halaman ke false:
Kodenya adalah sebagai berikut: <%@ Page EnableViewState="false"%>
3. Konfigurasi di file Web.Config:
Sesi asp.NET dapat dikonfigurasi dalam elemen Sessionsstate di Web.config atau Machine.config.
Berikut ini contoh pengaturan di Web.config:
<Batas waktu status sesi = "10" tanpa cookie = "false" mode = "Inproc" />
(4). Hindari menggunakan DataGrid
Semua orang tahu bahwa DataGrid sangat kuat. Namun, meskipun kuat, ini juga meningkatkan overhead kinerja. Umumnya menggunakan kontrol lain: DataList
Atau kontrol Repeater dapat mencapai hal ini, cobalah untuk tidak menggunakan DataGrid.
(5).Operasi string
1. Hindari operasi pengepakan yang kurang efisien.
Misalnya, jalankan dua cuplikan kode:
tes string="";
untuk(untuk int i=0;i<10000;i++)
{
tes = tes + saya;
}
Dan
tes string="";
untuk(untuk int i=0;i<10000;i++)
{
tes = tes + i.ToString();
}
Cuplikan kode di bawah ini jelas lebih efisien. Karena i adalah bilangan bulat, sistem harus terlebih dahulu mengkotakkan dan mengubah i menjadi tipe string sebelum menghubungkan.
Pembaca dapat menyalinnya ke mesin mereka sendiri dan mengujinya.
2. Gunakan kelas StringBulider
Saat melakukan penggabungan string: string str = str1 + str2 + ....;
Umumnya, untuk lebih dari tiga koneksi, yang terbaik adalah menggunakan StringBuilder daripada kelas string. StringBuilder dapat menghindari pembuatan ulang objek string.
kehilangan kinerja.
Umumnya digunakan saat menyusun pernyataan sql: StringBulider.
Pembaca dapat mengujinya di mesin mereka sendiri.
3. Gunakan sesedikit mungkin:
mencoba
{}
menangkap
{}
Akhirnya
{}
Pernyataan.Efisiensi pelaksanaan pernyataan ini relatif rendah.
(6) Optimalisasi penggunaan ADO.Net
1. Koneksi database dibuka dan ditutup. Buka ketika koneksi diperlukan, dan tutup koneksi segera setelah mengakses database.
Misalnya, mari kita lihat dua cuplikan kode:
SAYA.
Kumpulan Data ds = Kumpulan Data baru();
SqlConnection MyConnection = new SqlConnection("server=localhost; uid=sa; pwd=; database=NorthWind");
SqlCommand myCommand = new SqlCommand(strSql,MyConnection);
SqlDataAdapter myAdapter=baru SqlDataAdapter(queryStr,connectionStr);
MyConnection.Open(); //Buka koneksi
for(int i=0;i<1000;i++) //for loop mensimulasikan operasi logika bisnis sebelum memperoleh data
{
Thread.Tidur(1000);
}
myAdapter.Fill(ds);
for(int i=0;i<1000;i++) //for loop menyimulasikan operasi logika bisnis setelah mendapatkan data
{
Thread.Tidur(1000);
}
MyConnection.Close(); //Tutup koneksi
II.
Kumpulan Data ds = Kumpulan Data baru();
SqlConnection MyConnection = new SqlConnection("server=localhost; uid=sa; pwd=; database=NorthWind");
SqlCommand myCommand = new SqlCommand(strSql,MyConnection);
SqlDataAdapter myAdapter=baru SqlDataAdapter(queryStr,connectionStr);
for(int i=0;i<1000;i++) //for loop menyimulasikan operasi logika bisnis sebelum memperoleh data
{
Thread.Tidur(1000);
}
MyConnection.Open(); //Buka koneksi
myAdapter.Fill(ds);
MyConnection.Close(); //Tutup koneksi
for(int i=0;i<1000;i++) ////Perulangan for menyimulasikan operasi logika bisnis setelah memperoleh data
{
Thread.Tidur(1000);
}
Kode tampilan II jauh lebih baik daripada kode I. Kode I menempati koneksi lebih awal. Jika penggunanya banyak, kumpulan koneksi kemungkinan besar akan penuh. Dalam kasus yang parah, kecelakaan bisa saja terjadi.
2. Permintaan basis data
I. Langsung menghasilkan pernyataan sql. SQL Server harus mengkompilasinya setiap saat, dan tidak akan ada peningkatan kinerja yang besar. Selain itu, tidak cukup aman. Mudah diserang.
II. Gunakan perintah sql dengan parameter. Dengan cara ini, sql server hanya mengkompilasinya sekali, dan perintah yang dikompilasi dapat digunakan kembali untuk parameter yang berbeda. Peningkatan kinerja.
III.Gunakan prosedur tersimpan server sql. Kompilasi sekali. Ini independen dan mudah untuk dimodifikasi dan dipelihara. Ini dapat menyelesaikan fungsi pengiriman pernyataan beberapa kali sekaligus.
mengalir. Prosedur tersimpan belum tentu lebih efisien dibandingkan pernyataan. Jika logika bisnis sangat kompleks, terkadang pernyataan lebih efisien dibandingkan prosedur tersimpan.
(6).
Ada dua jenis cache: cache halaman dan cache API.
1. Gunakan cache halaman dan cache fragmen
<%@ OutputCache Duration="5" VaryByParam="Tidak Ada"%>
<%@ Durasi OutputCache=60 VaryByParam=”KotakTeks1,KotakTeks2” %>
Catatan: Durasi untuk mengatur waktu berakhirnya Cache;
VarByParam adalah apakah pengaturan berubah sesuai dengan parameter. Jika Tidak Ada, semua parameter menggunakan Cache yang sama.
Saat mengatur TextBox1, cache secara terpisah sesuai dengan nilai TextBox1 yang berbeda; bila ada beberapa parameter, cache dalam kombinasi;
2.tembolok API. untuk digunakan dalam aplikasi
I. Contoh penggunaan Cache:
http://blog.csdn.net/chengking/archive/2005/10/03/494545.aspx
II. Perhatikan perbedaan antara Page.Cache dan HttpContext.Current.Cache saat menggunakan:
Mereka merujuk ke objek yang sama. Di Halaman, gunakan Page.Cache. Jika Anda menggunakannya di global.asax atau kelas Anda sendiri: HttpContext.Current.Cache.