/*------------------------------------------------ ----------------
* Hak Cipta (C)
* semua hak dilindungi undang-undang.
*
* Nama file: ErrorManager.cs
* Deskripsi fungsi: Perbaikan kesalahan terpadu di asp.net. Untuk mencocokkan kategori ini, perlu ditambahkan halaman tampilan informasi kesalahan, seperti error.aspx
*
* Petunjuk penggunaan: 1. Mulai pengatur waktu di Application_Start() (hapus informasi kesalahan secara berkala): ErrorManager.Instance.Start(),
* Secara default, ini berjalan setiap 12 jam, atau diatur menggunakan ErrorManager.Instance.SetTimerInterval().
* 2. Di Application_Error(), ketika terjadi kesalahan, simpan informasi kesalahan dan buka error.aspx untuk menampilkan kesalahan.
* kunci string = ErrorManager.Instance.AddError();
* Respon.Redirect("error.aspx?key=" + key);
* 3. Dapatkan dan tampilkan pesan kesalahan dari kunci yang diteruskan melalui URL di error.aspx:
* string err = ErrorManager.Instance.GetError(kunci)
* 19 karakter pertama dalam err adalah waktu terjadinya kesalahan, diikuti dengan pesan kesalahan.
* 4. Untuk menangkap kesalahan batas waktu Sesi alih-alih mengembalikan pesan kesalahan bahwa Sesi[kunci] adalah nol, kelas ini menambahkan GetSession()
* dan SetSession berfungsi untuk mengelola Sesi secara seragam. Kedepannya, Sesi tidak dapat dibaca langsung di aspx, tetapi harus dibaca melalui kelas ini.
*
*
*Buat logo:
*
*Ubah logo:
*Ubah deskripsi:
*
*Ubah logo:
*Ubah deskripsi:
*------------------------------------------------ - --------------*/
menggunakan Sistem;
menggunakan Sistem.Data;
menggunakan Sistem.Konfigurasi;
menggunakan Sistem.Web;
menggunakan Sistem.Web.Keamanan;
menggunakan Sistem.Web.UI;
menggunakan Sistem.Web.UI.WebControls;
menggunakan System.Web.UI.WebControls.WebParts;
menggunakan Sistem.Web.UI.HtmlControls;
menggunakan Sistem.Koleksi;
/**//// <ringkasan>
/// Deskripsi ringkasan untuk Kesalahan
/// </ringkasan>
Manajer Kesalahan kelas publik
{
Sistem.Timer.Timer m_timer pribadi;
pribadi Hashtable m_htErr;
/**//// <ringkasan>
/// Konstruktor pribadi
/// </ringkasan>
pribadiErrorManager()
{
this.m_timer = Sistem baru.Timer.Timer();
this.m_timer.Enabled = salah;
this.m_timer.Interval = 12 * 60 * 60 * 1000; //Dieksekusi setiap 12 jam sekali secara default
this.m_timer.Elapsed += Sistem.Timers.ElapsedEventHandler(m_timer_Elapsed) baru;
this.m_htErr = Hashtable baru();
}
/**//// <ringkasan>
/// Antarmuka mode tunggal
/// </ringkasan>
Instance ErrorManager yang hanya dapat dibaca publik = ErrorManager baru();
/**//// <ringkasan>
/// Atur frekuensi pengatur waktu dalam milidetik
/// </ringkasan>
/// <param name="Interval">Milidetik</param>
kekosongan publik SetTimerInterval(int Interval)
{
this.m_timer.Interval = Interval;
}
/**//// <ringkasan>
/// Pengatur waktu dimulai
/// </ringkasan>
TimerStart kekosongan publik()
{
this.m_timer.Enabled = benar;
}
/**//// <ringkasan>
/// Pengatur waktu berakhir
/// </ringkasan>
kekosongan publik TimerStop()
{
this.m_timer.Enabled = salah;
}
/**//// <ringkasan>
/// Terjadi kesalahan Simpan informasi kesalahan dan kembalikan ID kesalahan agar mudah dibaca di halaman.
/// </ringkasan>
/// <returns>Kembalikan id yang salah</returns>
string publik AddError()
{
kunci string = Guid.NewGuid().ToString();
pesan string = System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")
+ HttpContext.Current.Server.GetLastError().GetBaseException().Pesan;
this.m_htErr.Add(kunci, pesan);
HttpContext.Current.Server.ClearError()
;
}
/**//// <ringkasan>
/// Mengembalikan pesan kesalahan dari Kunci yang ditentukan. 19 karakter pertama adalah waktu terjadinya kesalahan.
/// </ringkasan>
/// <param name="key">kunci adalah panduan</param>
/// <returns>Kembalikan pesan kesalahan</returns>
string publik GetError (kunci string)
{
kembalikan ini.m_htErr[key].ToString();
}
/**//// <ringkasan>
/// Hapus informasi kesalahan secara teratur di Hashtable
/// </ringkasan>
/// <param nama="pengirim"></param>
/// <param nama="e"></param>
private void m_timer_Elapsed(pengirim objek, System.Timers.ElapsedEventArgs e)
{
Daftar ArrayList = ArrayList baru();
kunci(ini.m_htErr)
{
DateTime sekarang = DateTime.Sekarang;
Rentang Waktu;
foreach (kunci string di this.m_htErr.Keys)
{
//19 karakter pertama adalah tanggal terjadinya kesalahan, yyyy-MM-dd HH:mm:ss
string waktu = ini.m_htErr[kunci].ToString().Substring(0, 19);
ts = sekarang - Convert.ToDateTime(waktu);
if (ts.TotalMinutes > 20) //Hapus informasi kesalahan 20 menit yang lalu dari tabel hash
daftar.Tambahkan(kunci);
}
foreach (kunci string dalam daftar)
{
this.m_htErr.Hapus(kunci);
}
}
}
Enkapsulasi operasi Sesi#wilayah Enkapsulasi operasi Sesi
/**//// <ringkasan>
/// Dapatkan Sesi dari nilai kunci yang ditentukan
/// </ringkasan>
/// <param name="key">Nilai kunci</param>
/// <returns>Nilai konten utama</returns>
objek publik GetSession (kunci string)
{
objek val = HttpContext.Saat ini.Sesi[kunci];
jika (val == nol)
throw new Exception("Waktu halaman habis, silakan masuk lagi.");
return val;
}
/**//// <ringkasan>
/// Siapkan Sesi
/// </ringkasan>
/// <param name="key">Nilai kunci</param>
/// <param name="val">Konten utama</param>
public void SetSession (kunci string, nilai objek)
{
HttpContext.Saat ini.Sesi[kunci] = val;
}
#wilayah akhir
}
http://www.cnblogs.com/81/archive/2006/08/16/478175.html