Direkomendasikan: Kumpulan fungsi yang berguna dalam pengembangan ASP (1) Kumpulan fungsi yang berguna dalam pengembangan ASP cukup berguna! Saya harap semua orang menyimpannya! % '******************************************************' Cegah Pengajuan Eksternal '********************************* Fungsi chkpost () Dim Server_V1, server_v2 chkpost = server palsu_v1 = CStrervari
Dalam VBScript, ada pernyataan resume ON error berikutnya yang menyebabkan penerjemah skrip mengabaikan kesalahan runtime dan melanjutkan eksekusi kode skrip. Kemudian skrip dapat memeriksa nilai properti err.number untuk menentukan apakah kesalahan terjadi. Jika kesalahan terjadi, nilai tidak nol dikembalikan. Dalam ASP 3.0, Anda juga dapat menggunakan kesalahan GOTO 0 untuk kembali ke penanganan kesalahan default. Pemrosesan semacam ini sebenarnya dilakukan di ASP 2.0, tetapi tidak ada deskripsi dokumen yang sesuai, yang umum di banyak file pemrosesan terkait data ASP. Tambahkan resume kesalahan di sebelah untuk mematikan pemrosesan kesalahan default dan kemudian gunakan ERR untuk menangkapnya.Jika err maka
err.clear
Terjadi kesalahan sebagai respons. Tuliskan!
Respons.end
Akhiri jika
Untuk mendapatkan deskripsi kesalahan yang lebih rinci, mari kita coba objek Asperror. Ini adalah objek baru ASP3.0. Ini dapat diperoleh melalui metode getlasterror dari objek server . Asperror memberikan informasi terperinci tentang kesalahan terakhir dalam ASP. Berbeda dengan objek ERR dalam VBScript, metode ini tidak dapat dipanggil kapan saja untuk melihat apakah terjadi kesalahan. Ini hanya dapat digunakan di halaman web kesalahan ASP yang disesuaikan. Jika Anda menggunakannya dengan mematikan penanganan kesalahan default (menggunakan pernyataan resume ON Error Next) seperti menggunakan objek ERR, metode GetLasterRor tidak dapat mengakses data terperinci dari kesalahan tersebut.
Properti Objek Asperror:
Objek Asperror menyediakan sembilan atribut untuk menunjukkan sifat dan sumber kesalahan yang terjadi, dan mengembalikan kode aktual yang menyebabkan kesalahan. Properti dan deskripsi adalah sebagai berikut:
AspCode: Integer. Nomor kesalahan yang dihasilkan oleh ASP/IIS, seperti 0x800a009
Aspdescription: Jenis string. Jika kesalahan ini merupakan kesalahan terkait ASP, properti ini adalah deskripsi terperinci dari kesalahan tersebut. Sebagai contoh: semua http: http_accept:*/* http_accept_language: zh-cn http_connection: tetap hidup http_host: s http_user_agent: mozilla/4.0 (kompatibel; msie 6.0; windows nt 5.0;
Kategori: Jenis String. Sumber kesalahannya adalah bahasa skrip internal ASP, atau objek.
Kolom: Integer. Lokasi karakter dalam file yang menghasilkan kesalahan
Deskripsi: Jenis string. Deskripsi singkat tentang kesalahan
File: Jenis String. Nama file yang sedang diproses saat kesalahan terjadi
Baris: Integer. Nomor baris dalam file yang menghasilkan kesalahan
Nomor: Integer. Kode kesalahan com standar
Sumber: Jenis String. Kode aktual dari baris yang meningkatkan kesalahan
Oke, ini adalah 9 properti. Sintaks menggunakan objek Asperror adalah:
Asperror.property
Itu dia: asperror.aspcode ()
Asperror.aspdescription ()
Asperror.category ()
Asperror.column ()
Asperror.description ()
Asperror.file ()
Asperror.line ()
Asperror.number ()
Asperror.source ()
Ketika kesalahan terkait ASP terjadi pada halaman apa pun di bawah semua direktori yang didukung oleh IIS (atau di direktori di mana properti pemetaan kesalahan diedit), halaman kesalahan khusus akan dimuat. Bahkan, perangkap kesalahan skrip normal telah ditetapkan sekarang, karena kesalahan runtime ASP pada halaman web apa pun di direktori ini akan memicu halaman kesalahan khusus. Halaman Web Kesalahan adalah bagian instalasi default dari IIS dan dapat disesuaikan sesuai dengan situasi pribadi. Misalnya, ketika kita memasukkan halaman web yang tidak ada di direktori, kesalahan 404 terjadi. Ketika kesalahan 404 terjadi, halaman yang digunakan adalah 404b.htm. File ini berisi bagian kode skrip klien, yang memperoleh URL dari dokumen saat ini (ambil dari atribut URL objek dokumen) dan menampilkannya di halaman: [html] <! Doctype html public -// w3c // dtd html 3.2 final // en>
<html dir = ltr>
<head>
<tyle> a: link {font: 9pt/11pt 环; Warna: FF0000} A: Dikunjungi {font: 9pt/11pt 环; Warna:#4e4e4e}
</tyle>
<Meta name = robot konten = noIndex>
<title> Tidak dapat menemukan halaman web </iteme>
<Meta http-equiv = konten-tipe konten = text-html; Charset = GB2312>
<Meta name = ms.locale konten = zh-cn>
</head>
<script>
function homePage () {
<!-
// Dalam Bit Nyata, URL dikembalikan ke skrip kami seperti ini:
// res: //shdocvw.dll/http_404.htm#http: //www.docurl.com/bar.htm
// Untuk pengujian gunakan docurl = res: //shdocvw.dll/http_404.htm#https: //www.microsoft.com/bar.htm
Docurl = document.url;
// Di sinilah http atau https akan, seperti yang ditemukan dengan mencari: // tetapi melewatkan res: //
protocolIndex = docurl.indexof (: //, 4);
// Ini menemukan slash akhir untuk server domain
serverIndex = docurl.IndexOf (/, ProtocolIndex + 3);
// Untuk HREF, kita membutuhkan URL yang valid ke domain. Kami mencari simbol # untuk menemukan awal
// dari URL yang sebenarnya, dan tambahkan 1 untuk melewatkannya - ini adalah nilai awal. Kami menggunakan serverIndex sebagai penanda akhir.
//urlresult=docurl.substring(protocolindex - 4, serverIndex);
Starturl = docurl.indexof (#, 1) + 1;
urlResult = docurl.substring (beginurl, serverIndex);
// Untuk tampilan, kita perlu melewatkan setelah http: //, dan pergi ke slash berikutnya
displayResult = docurl.substring (ProtocolIndex + 3, serverIndex);
InsertElementanchor (UrlResult, DisplayResult);
}
fungsi htmlencode (teks)
{
kembalikan text.replace (/&/g, '& amp'). Ganti (/'/g,' & quot; '). Ganti (/</g,' & lt; '). Ganti (// g,' & gt; ');
}
fungsi tagattrib (nama, nilai)
{
return ''+name+'='+htmlencode (value)+'';
}
function printtag (tagName, needclosetag, attrib, inner) {
document.write ('<' + tagname + attrib + '>' + htmlencode (dalam));
if (needclosetag) document.write ('</' + tagname + '>');
}
function uri (href)
{
Iever = window.navigator.appversion;
Iever = iever.substr (iever.indexof ('msie') + 5, 3);
return (iever.charat (1) == '.' && iever> = '5.5')?
Encodeuri (href):
Escape (href). Replace (/%3a/g, ':'). Ganti (/%3b/g, ';');
}
Function InsertElementanchor (HREF, Teks)
{
Printtag ('a', true, tagattrib ('href', uri (href)), teks);
}
//->
</script>
<body bgcolor = ffffff>
<Lebar Tabel = 410 CellPadding = 3 CellPacing = 5>
<tr>
<td align = valign kiri = lebar tengah = 360>
<h1 style = warna: 000000; Font: 12pt/15pt Songti> <!-Masalah-> Halaman web tidak dapat ditemukan </h1>
</td>
</tr>
<tr>
<td width = 400 colspan = 2> <font style = color: 000000; Font: 9pt/11pt> Halaman web yang Anda cari mungkin telah dihapus, diganti namanya, atau untuk sementara tidak tersedia. </font> </td>
</tr>
<tr>
<td width = 400 colspan = 2> <font style = color: 000000; Font: 9pt/11pt Song Font>
<hr color =#c0c0c0 noshade>
<p> Silakan coba yang berikut: </p>
<ul>
<li> Jika Anda mengetik alamat web di bilah alamat, periksa apakah itu dieja dengan benar. <br>
</li>
<li> Buka <script>
<!-
if (! ((window.navigator.useragent.indexof (msie)> 0) && (window.navigator.appversion.charat (0) == 2))))
{
Beranda ();
}
//->
</script> beranda, temukan tautan ke informasi yang diperlukan. </li>
<li> Klik tombol <a href = javascript: history.back (1)> kembali </a> untuk mencoba tautan lain. </li>
</ul>
<h2 style = font: 9pt/11pt songti; Warna: 000000> http 404 - File tidak dapat ditemukan <br> Layanan Informasi Internet <br> </h2>
<hr color =#c0c0c0 noshade>
<p> Informasi teknis (individu pendukung) </p>
<ul>
<li> Detail: <br> <a href = http: //www.microsoft.com/contentredirect.asp? prd = iis & sbp = & pver = 5.0 & pid = & id = 404 & cat = web & os = & lebih = & hrd = & opt1 = & opt2 = & opt3 = target = oS = & over = & hrd = & opt1 = & opt2 = & opt3 = target = oS = & over = & hrd = & opt1 = & opt2 = & opt3 = target = os = & hrd = & hrd = & opt1 = & opt2 = & opt3 = o. & hrd = & HRD = & opt2 = & opt2 = & opt3 = o. & HRD = & HRD = & opt2 = & opt2 = & oSt3 = & HRD = & HRD & HRD = & opt2 = & opt2 = & opt3 =
</li>
</ul>
</font> </td>
</tr>
</boable>
</body>
</html>
[/html]
Ketika kesalahan terjadi, hubungan pemetaan antara kesalahan dan file halaman web kesalahan ditentukan di tab Kesalahan Kustom dari kotak dialog Properties dari setiap direktori. Ini ada di pengaturan properti di Internet Services Manager. Jika Anda tertarik, pergi dan lihat.
Kesalahan Kustom Halaman web menampilkan semua nilai atribut objek Asperror, dan mengembalikan pesan status header http ke klien dengan menggunakan metode respons.status, menunjukkan bahwa kesalahan telah terjadi. Kemudian gunakan metode getlasterror untuk mendapatkan referensi ke objek Asperror, sehingga Anda dapat mengakses data kesalahan terperinci:
...
<%
Response.status = 500 kesalahan server internal
Set ObjaspeError = server.getlasterror ()
%>
Saat ini mengeksekusi halaman: <b> show_error.asp </b> <p>
<b> Rincian kesalahan: </b> <br>
Asperror.aspcode = < % = objaspeerror.aspcode %> <br>
Asperror.number = < % = objaspeerror.number %> (0x < % = hex (objaspeerror.number) %>) <br>
Asperror.source = < % = server.htmlencode (objasperror.source) %> <br>
Asperror.category = < % = objaspeerror.category %> <br>
Asperror.file = < % = objaspeerror.file %> <br>
Asperror.line = < % = objaspeerror.line %> <br>
Asperror.column = < % = objaspeerror.column %> <br>
Asperror.description = < % = objaspeerror.description %> <br>
Asperror.aspds = < % = objaspeerror.aspds %>
<Form Action = < % = request.serverVariables (http_referer) %> Metode = Post>
<Input Type = Kirim Nama = CMDOK Nilai = Kembali ke halaman sebelumnya>
<p>
</form> Jika skrip atau kesalahan ASP terjadi di halaman kesalahan khusus, IIS hanya akan mengembalikan pesan umum yang sesuai dengan kode kesalahan 500: 100. Ini bisa berupa pesan kesalahan dari mesin skrip itu sendiri, atau hanya pesan yang agak sederhana: kesalahan server internal. Halaman kesalahan yang disesuaikan tidak akan dimuat ulang lagi.
Semua lingkungan yang berisi halaman web yang salah akan dikirimkan ke halaman web yang salah. Artinya, nilai yang disimpan dalam koleksi atau atribut objek internal ASP dapat digunakan. Misalnya, jika Anda mengambil nilai http_referer dari koleksi permintaan. Nilai ini tidak berubah ketika server mentransfer eksekusi ke halaman web yang salah, dan tidak akan berisi URL halaman web yang dieksekusi ketika kesalahan terjadi.
Demikian pula, nilai skrip_name akan menjadi nama halaman yang berisi kesalahan, bukan URL halaman. Ketika halaman kesalahan telah dimuat, Anda dapat mengonfirmasi ini dengan memeriksa URL di bilah alamat browser. Namun, nilai -nilai yang disimpan dalam variabel skrip halaman web asli tidak tersedia di halaman web yang salah.
Jika halaman web ASP asli berjalan dalam transaksi, yaitu, ada arahan < % @transaction = ... %> di depan halaman web, Anda juga harus menentukan apakah beberapa metode perlu diambil di halaman web untuk keluar dari transaksi. Misalnya, Anda dapat memanggil metode setabort dengan objek ObjectContext bawaan:
ObjectContext.setabort
Nah, waktu front-end telah mengirim ribuan email spam, yang semuanya ditangani kesalahan
Opsi eksplisit
Response.addheader status kode, 200
Response.addheader alasan, ok
Pada kesalahan resume berikutnya
Respons.clear
Redup objerror
Atur objerror = server.getlasterror ()
redup objerr, objmail, html
atur objerr = server.getlasterror ()
Set ObjMail = CreateObject (cdonts.newmail)
objmail.from = [email protected]
objmail.to = [email protected]
objmail.BodyFormat = 0
objmail.mailformat = 0
objmail.subject = qop error 500
html = <font face = 'verdana, Arial, helvetica, sans-serif'> <br>
html = html & <p> kesalahan terjadi di: & sekarang
html = html & <p> Disebut dari: & request.servaribles (http_referer)
html = html & <p> url: & request.servaribles (url)
html = html & <p> <b> kategori: </b> </p> & objerr.category
html = html & <p> <b> nama file: </b> </p> & objerr.file
html = html & <p> <b> Kode ASP: </b> </p> & objerr.aspcode
html = html & <p> <b> Nomor: </b> </p> & objerr.number
html = html & <p> <b> Sumber: </b> </p> & objerr.source
html = html & <p> <b> linenumber: </b> </p> & objerr.line
html = html & <p> <b> kolom: </b> </p> & objerr.column
html = html & <p> <b> Deskripsi: </b> </p> & objerr.Description
html = html & <p> <b> Deskripsi ASP: </b> </p> & objerr.aspdescription
html = html & <clockquote>
html = html & semua http: & request.servervariables (all_http)
html = html & </blockquote> </font>
objmail.body = html
objmail.send
objerr.clear
Atur objmail = tidak ada
Atur objerr = tidak ada
response.write (html)
Ini sangat menjengkelkan untuk beroperasi. Lihatlah apa yang ditulis oleh Mr. Lao Gai di 500-100.asp:
<%
Response.Write Objasperror.Category
Jika objaspeerror.aspcode> lalu response.write, & objaspeerror.aspcode
Response.write (0x & hex (objasperror.number) &) & <br>
Response.write <b> & objasperror.description & </b> <br>
Jika objaspeerror.aspds> maka respons.
Blnerrorwritten = false
'Hanya tunjukkan sumber jika tersedia dan permintaannya dari mesin yang sama dengan IIS
Jika ObjaspeError.Source>
strserverName = lcase (request.serverVariable (server_name))
strserverip = request.serverVariables (local_addr)
strremoteip = request.serverVariables (remote_addr)
If (strservername = localhost atau strserverip = strremoteip) dan objasperror.file <>? Kemudian
Response.write objasperror.file
Jika objasperror.line> 0 lalu respons.write, line & objasperror.line
Jika objaspeerror.column> 0 lalu respons.write, kolom & objaspeerror.column
Response.write <br>
Response.write <font style = color: 000000; Font: 8pt/11pt Courier New> <b>
Response.write server.htmlencode (objasperror.source) & <br>
Jika ObjaspeError.Column> 0 lalu response.write String ((ObjaspeError.Column - 1), -) & ^<br>
Response.write </b> </font>
Blnerrorwritten = true
Akhiri jika
Akhiri jika
Jika bukan Blnerrorwritten dan objasperror.file <>? Kemudian
Response.write <b> & objasperror.file
Jika objasperror.line> 0 lalu respons.write, line & objasperror.line
Jika objaspeerror.column> 0 lalu respons.write, kolom & objaspeerror.column
Response.write </b> <br>
Akhiri jika
%>
Berikut adalah referensi: ASP 3.0 Pemrograman Lanjutan Mengenai Properti Menggunakan Objek Asperror, ada poin -poin berikut yang patut dicatat:
· Bahkan jika tidak ada kesalahan yang terjadi, properti angka harus selalu memiliki nilai. Jika tidak ada kesalahan yang terjadi ketika halaman web ASP memanggil metode Getlasterror, nilai properti ini adalah 0. Biasanya, untuk kesalahan run-time skrip ASP, properti angka mengembalikan nilai hexadecimal 0x800A0000, ditambah kode kesalahan mesin skrip standar. Sebagai contoh, contoh sebelumnya mengembalikan nilai 0x800a0009 untuk kesalahan subscript di luar jangkauan, karena kode kesalahan untuk VBScript untuk kesalahan tipe ini adalah 9.
· Ketika kesalahan telah berlalu, atribut kategori dan deskripsi akan selalu memiliki nilai.
· Nilai properti apscode dihasilkan oleh IIS dan akan kosong untuk sebagian besar kesalahan skrip. Dalam lebih banyak kasus, ada nilai yang sesuai ketika komponen eksternal digunakan kesalahan.
Nilai properti Aspdescription dihasilkan oleh preprocessor ASP, bukan oleh mesin skrip yang saat ini digunakan, dan akan kosong untuk sebagian besar kesalahan skrip. Lebih sering, ada nilai yang sesuai untuk kesalahan seperti memanggil metode yang tidak valid pada objek bawaan ASP.
· Properti file, sumber, baris, dan kolom hanya dapat diatur ketika kesalahan terjadi dan jika kesalahan data terperinci tersedia. Untuk kesalahan runtime, properti file dan baris biasanya valid, tetapi properti kolom sering mengembalikan -1. Properti sumber dikembalikan ketika kesalahan adalah kesalahan sintaks yang mencegah halaman dari diproses oleh ASP. Secara umum, dalam kasus ini, properti garis dan kolom valid. Jika Anda menulis nilai properti sumber ke halaman, adalah bijaksana untuk memberikan nilai ke htmlencode terlebih dahulu, jika mengandung karakter HTML ilegal. Metode htmlencode akan dibahas secara rinci nanti dalam bab ini.
Objek kesalahan
Tips: Ini adalah kedua kalinya saya menulis ini, dan. Fokus asli adalah pada pengenalan objek Asperror. Sekarang saya akan memperkenalkan objek err. Ini adalah objek yang sangat sederhana dan mudah dioperasikan. Ayo pergi., Di halaman ASP.
Saat menggunakan objek ERR, Anda tidak perlu membuat instance, yang berarti Anda dapat menggunakannya dengan santai ketika Anda ingin menggunakannya. Sama seperti sesi, Anda tidak perlu membuat instance seperti saat menggunakan objek ADODB. Set Conn = Server.CreateObject (ADODB.Connection) digunakan untuk membuat instance. Ini mengembalikan kode kesalahan, tetapi err! = Err.number dapat dihapus dengan metode yang jelas untuk memfasilitasi penggunaan berikutnya. Metode utamanya adalah metode deskripsi, yang mengembalikan deskripsi kesalahan singkat. Berikut adalah contoh yang sangat klasik:
< %@ Bahasa = VBScript %>
<%Response.buffer = true
Pada kesalahan resume berikutnya
%>
<%
S = SA
response.write (int (s))
Jika err.number <> 0 lalu
Respons.clear
Terjadi kesalahan dalam respons. Penulisan:%>
<Html>
<head>
<title> </title>
</head>
<body>
Nomor kesalahan: < %= err.number %> <br/>
Pesan Kesalahan: < %= err.Description %> <br/>
File kesalahan: < %= err.source %> <br/>
Baris kesalahan: < %= err.line %> <br/>
< %= Err %>
</body>
</html>
<%Berakhir jika%>
Jalankan dan lihat, err.line kosong, mengapa? Karena metode garis yang ditulis dalam VB ASP tidak didukung, ini adalah properti limbah dalam dukungan VB.Jscript, dan Anda perlu belajar untuk menangkap.
Perlu dicatat bahwa ketika menggunakan objek ERR, pada resume kesalahan selanjutnya harus ditambahkan, dan pengecualian yang telah melewati objek Asperror dilemparkan.
Saat menautkan database, Anda dapat menggunakan objek kesalahan: menghitung properti: digunakan untuk menghitung jumlah koleksi kesalahan, metode item: digunakan untuk menentukan kesalahan tertentu, sintaksnya adalah error.item (angka), di mana angka adalah angka. Karena item adalah metode default, metode penulisan kesalahan (angka) setara dengan yang sebelumnya. Di bawah ini adalah program. Digunakan untuk menyebutkan objek kesalahan:
<%
Pada kesalahan resume berikutnya
Set Conn = Server.CreateObject (AdodB.Connection)
Redup i, your_databasePath: your_databasePath = No.mdb
connstr = provider = microsoft.jet.oledb.4.0; Sumber data = & server.mappath (your_databasePath) &
Conn.open Connstr
jika conn.errors.count <> 0 lalu
Response.Write gagal menautkan database <hr/>
untuk i = 0 ke conn.errors.count-1
response.write conn.errors.item (i) & <hr>
response.write err.description
Berikutnya
kalau tidak
response.write link database berhasil
akhiri jika
Conn.Close
%>
Tidak ada perbedaan antara objek err, apakah Anda pernah melihat hasil perbandingan? Sangat dingin sehingga mudah menggunakan objek err secara langsung.
Secara umum disarankan untuk menggunakan objek Asperror selama debugging, yang berarti bahwa jika kesalahan resume baris berikutnya adalah REM, itu akan dilemparkan secara default dengan Asperror. Selama operasi resmi, Anda dapat menggunakan objek ERR untuk melakukan sesuatu kecuali Anda memiliki persyaratan khusus.
Bagikan: Kumpulan fungsi yang berguna dalam pengembangan ASP (2) Kumpulan fungsi yang berguna dalam pengembangan ASP cukup berguna, harap simpan! '*************************************' menyaring hyperlink '***************************** Fungsi checkurl (byval chkstr) redup str: str = chkstr str = trim (str) if isnull (str) kemudian chktr