PDA

View Full Version : custom error



roya_dibaj
دوشنبه 19 آذر 1386, 08:53 صبح
سلام من با asp.net2 with c# کار می کنم و دنبال کدی هستم که error های برنامه را در یک صفحه log.txt هم زمان error هم تاریخ error و هم message error را بنویسد. ولی user برای هر error یک صفحه error.aspx را ببیند که به user اعلام می کند که مثلا برای اشکال ایجاد شده به admin . mail بزنیدو....
لطفا کد را برایم ارسال کنید و خواهشآ بنویسید ان را در کدام صفحه بنویسم در خود صفحه error یا webconfig یا global و آیا باید تغییر دیگری هم در کد یکی از این صفحات بدهم یا خیر ؟

asgari2005
دوشنبه 19 آذر 1386, 10:48 صبح
دوست گرامی فقط نیاز است که Error را در رخداد ،Application_Error در فایل Global.asax بگیری و در یک فایل متن خطا را همراه تاریخ و ساعت و باقی اطلاعات بنویسی

void Application_Error(object sender, EventArgs e)
{
Exception ex=new Exception();
ex=Server.GetLastError();


}

Behrouz_Rad
دوشنبه 19 آذر 1386, 11:36 صبح
دوست گرامی فقط نیاز است که Error را در رخداد ،Application_Error در فایل Global.asax بگیری و در یک فایل متن خطا را همراه تاریخ و ساعت و باقی اطلاعات بنویسی

void Application_Error(object sender, EventArgs e)
{
Exception ex=new Exception();
ex=Server.GetLastError();


}
Application_Error برای روال های Unhandled هست.
خطاهایی که در برنامه با Try Catch هندل شدن از فراخوانی روال Application_Error جلوگیری می کنند.
Application_Error باید در کنار روال های عادی Try Catch استفاده بشه.
Log کردن خطاها رو باید در قسمت Catch بلوک های برنامه انجام بدید. یا به وسیله ی کدهای خودتون یا با استفاده از ابزارهایی همچون Log4Net
+ وقتی که در روال Application_Error متد GetLastError رو فراخوانی می کنید، حتما بعد از اون متد ClearError رو هم فراخوانی کنید تا استک از خطا خالی بشه و باعث بُروز مجدد خطا نشه.

موفق باشید.

roya_dibaj
دوشنبه 19 آذر 1386, 11:45 صبح
دوست عزیز خیلس ممنون از راهنمایتان ولی شما منظور منو اشتباه متوجه شدید. من می خواهم توی log.txt برای من نه user تاریخ رخ دادن error و زمان و دلیل(message ) خطا را بنویسد.
درضمن این کد شما اجرا نشد و ÷یغام خطای زیر را داد .
ex is a variable but is used like a method

asgari2005
دوشنبه 19 آذر 1386, 21:41 عصر
چشم سرکارخانم این هم چیزی که می خواهید:
Exception ex = Server.GetLastError();
LogException( ex );
فقط نیاز است function فوق را به صورت زیر بنویسید:
public static void LogException( Exception ex )
{
using ( StreamWriter sw = new StreamWriter➥
( HttpContext.Current.Server.MapPath➥
( "~/ExceptionLog/LogFile.txt" ) , true ) )
{
sw.WriteLine( DateTime.Now.ToShortDateString() +
Environment.NewLine +
ex.InnerException.ToString() +
Environment.NewLine +
Environment.NewLine );
}
}
در آخر فقط یک نکته این که شما به دلیل اینکه در فایلی دارید Write می کنید نیاز است به User ،Aspnet مجوز دسترسی به فایل مورد نطر بدهید

roya_dibaj
سه شنبه 20 آذر 1386, 09:22 صبح
دستت درد نکنه خیلی لطف کردی :-):بوس: