actros
چهارشنبه 20 دی 1391, 04:45 صبح
نمی دونم قبلا کسی به این مساله اشاره کرده یا نه به هر حال..
یکی از دغدغه های برنامه نویس ها خطاهایی هست که بعد از تحویل پروژه به مشتری رخ میده.هر چقدر هم خوب پروژه رو دیباگ کنیم بالاخره ممکنه خطاهایی باشه که تو محیط develop خودشو نشون نده(مخصوصا وب فرم ها که ذاتا Testability پائینی دارن) اگه ما بتونیم همه خطاهایی که حین کارکرد برنامه رخ میده رو کنار هم مشاهده کنیم،کمک زیادی تو برطرف کردن مشکل و ارتقا عملکرد سایت می کنه.
بعضی از این خطاها مطالبی رو به ما یادآوری می کنن که تو حین ساخت پروژه بهشون نپرداختیم و اصلا تصور بروز چینین خطایی رو نداشتیم.
بیشتر از این فکر نکنم نیازی به توضیح باشه.بهتره بریم سراغ اصل مطلب:
خوب طبق معمول تو مواردی که قصد ایجاد یک کارکرد در سطح کل سایت رو داریم دست به دامن global.asax می شیم :دی
مراحا کار:
1- فایل global.asax رو باز کنید و یا اگه ندارید یکیشو بسازید.
2- Namespace ئه System.Net.Mail رو جهت ارسال ایمیل ایپورت کنید.مثل همیشه جای Namespace بالای صفحه ست.VB و #C یکیه :
<%@ Import Namespace="System.Net.Mail" %>
3- متد زیر رو به فایل گلوبال اضافه کنید:
Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs)
If HttpContext.Current.Server.GetLastError() IsNot Nothing Then
Dim myException As Exception = HttpContext.Current.Server.GetLastError().GetBaseE xception()
Dim mailSubject As String = "Error in page " & Request.Url.ToString()
Dim message As String = String.Empty
message &= "<strong>Message</strong><br />" & myException.Message & "<br />"
message &= "<strong>StackTrace</strong><br />" & myException.StackTrace & "<br />"
message &= "<strong>Query String</strong><br />" & Request.QueryString.ToString() & "<br />"
Dim myMessage As New MailMessage("from email", "to email", mailSubject, message)
myMessage.IsBodyHtml = True
Dim mysmtp As New SmtpClient
mysmtp.Host = "هاست شماsmtp آدرس"
mysmtp.Credentials = New Net.NetworkCredential("YourSiteEmail", "password")
mysmtp.Send(myMessage)
End If
End Sub
#C:
public void Application_Error(object sender, EventArgs e)
{
if (HttpContext.Current.Server.GetLastError() != null) {
Exception myException = HttpContext.Current.Server.GetLastError().GetBaseE xception();
string mailSubject = "Error in page " + Request.Url.ToString();
string message = string.Empty;
message += "<strong>Message</strong>" + myException.Message + "";
message += "<strong>StackTrace</strong>" + myException.StackTrace + "";
message += "<strong>Query String</strong>" + Request.QueryString.ToString() + "";
MailMessage myMessage = new MailMessage("from email", "to email", mailSubject, message);
myMessage.IsBodyHtml = true;
SmtpClient mysmtp = new SmtpClient();
mysmtp.Host = "Your smtp";
mysmtp.Credentials = new Net.NetworkCredential("هاست شماsmtp آدرس", "password");
mysmtp.Send(myMessage);
}
}
4- تموم شد برای تست می تونید یه صفحه که تو سایتتون وجود نداره رو درخواست کنید.
پیشنهاد می کنم یه اکانت جیمیل مختص این کار بسازید تا کل خطاهای سایتهاتون رو یکجا ببینید :دی
اگه هاست ندارید می تونید از smtp رایگان گوگل استفاده کنید (کافیه یه جیمیل داشته باشید)
Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs)
If HttpContext.Current.Server.GetLastError() IsNot Nothing Then
Dim myException As Exception = HttpContext.Current.Server.GetLastError().GetBaseE xception()
Dim mailSubject As String = "Error in page " & Request.Url.ToString()
Dim message As String = String.Empty
message &= "<strong>Message</strong><br />" & myException.Message & "<br />"
message &= "<strong>StackTrace</strong><br />" & myException.StackTrace & "<br />"
message &= "<strong>Query String</strong><br />" & Request.QueryString.ToString() & "<br />"
Dim myMessage As New MailMessage
myMessage.Subject = "Error in page " & Request.Url.ToString()
myMessage.Body = message
myMessage.From = New MailAddress("from email", "display name")
myMessage.To.Add(New MailAddress("ایمیل شما"))
myMessage.IsBodyHtml = True
Dim mysmtp As New SmtpClient
mysmtp.Host = "smtp.gmail.com"
mysmtp.Credentials = New Net.NetworkCredential("Yourgmailadress", "gmailpass")
mysmtp.Port = 587
mysmtp.EnableSsl = True
mysmtp.Send(myMessage)
End If
End Sub
public void Application_Error(object sender, EventArgs e)
{
if (HttpContext.Current.Server.GetLastError() != null) {
Exception myException = HttpContext.Current.Server.GetLastError().GetBaseE xception();
string mailSubject = "Error in page " + Request.Url.ToString();
string message = string.Empty;
message += "<strong>Message</strong>" + myException.Message + "";
message += "<strong>StackTrace</strong>" + myException.StackTrace + "";
message += "<strong>Query String</strong>" + Request.QueryString.ToString() + "";
MailMessage myMessage = new MailMessage();
myMessage.Subject = "Error in page " + Request.Url.ToString();
myMessage.Body = message;
myMessage.From = new MailAddress("from email", "display name");
myMessage.To.Add(new MailAddress("ایمیل شما"));
myMessage.IsBodyHtml = true;
SmtpClient mysmtp = new SmtpClient();
mysmtp.Host = "smtp.gmail.com";
mysmtp.Credentials = new Net.NetworkCredential("Yourgmailadress", "gmailpass");
mysmtp.Port = 587;
mysmtp.EnableSsl = true;
mysmtp.Send(myMessage);
}
}
یکی از دغدغه های برنامه نویس ها خطاهایی هست که بعد از تحویل پروژه به مشتری رخ میده.هر چقدر هم خوب پروژه رو دیباگ کنیم بالاخره ممکنه خطاهایی باشه که تو محیط develop خودشو نشون نده(مخصوصا وب فرم ها که ذاتا Testability پائینی دارن) اگه ما بتونیم همه خطاهایی که حین کارکرد برنامه رخ میده رو کنار هم مشاهده کنیم،کمک زیادی تو برطرف کردن مشکل و ارتقا عملکرد سایت می کنه.
بعضی از این خطاها مطالبی رو به ما یادآوری می کنن که تو حین ساخت پروژه بهشون نپرداختیم و اصلا تصور بروز چینین خطایی رو نداشتیم.
بیشتر از این فکر نکنم نیازی به توضیح باشه.بهتره بریم سراغ اصل مطلب:
خوب طبق معمول تو مواردی که قصد ایجاد یک کارکرد در سطح کل سایت رو داریم دست به دامن global.asax می شیم :دی
مراحا کار:
1- فایل global.asax رو باز کنید و یا اگه ندارید یکیشو بسازید.
2- Namespace ئه System.Net.Mail رو جهت ارسال ایمیل ایپورت کنید.مثل همیشه جای Namespace بالای صفحه ست.VB و #C یکیه :
<%@ Import Namespace="System.Net.Mail" %>
3- متد زیر رو به فایل گلوبال اضافه کنید:
Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs)
If HttpContext.Current.Server.GetLastError() IsNot Nothing Then
Dim myException As Exception = HttpContext.Current.Server.GetLastError().GetBaseE xception()
Dim mailSubject As String = "Error in page " & Request.Url.ToString()
Dim message As String = String.Empty
message &= "<strong>Message</strong><br />" & myException.Message & "<br />"
message &= "<strong>StackTrace</strong><br />" & myException.StackTrace & "<br />"
message &= "<strong>Query String</strong><br />" & Request.QueryString.ToString() & "<br />"
Dim myMessage As New MailMessage("from email", "to email", mailSubject, message)
myMessage.IsBodyHtml = True
Dim mysmtp As New SmtpClient
mysmtp.Host = "هاست شماsmtp آدرس"
mysmtp.Credentials = New Net.NetworkCredential("YourSiteEmail", "password")
mysmtp.Send(myMessage)
End If
End Sub
#C:
public void Application_Error(object sender, EventArgs e)
{
if (HttpContext.Current.Server.GetLastError() != null) {
Exception myException = HttpContext.Current.Server.GetLastError().GetBaseE xception();
string mailSubject = "Error in page " + Request.Url.ToString();
string message = string.Empty;
message += "<strong>Message</strong>" + myException.Message + "";
message += "<strong>StackTrace</strong>" + myException.StackTrace + "";
message += "<strong>Query String</strong>" + Request.QueryString.ToString() + "";
MailMessage myMessage = new MailMessage("from email", "to email", mailSubject, message);
myMessage.IsBodyHtml = true;
SmtpClient mysmtp = new SmtpClient();
mysmtp.Host = "Your smtp";
mysmtp.Credentials = new Net.NetworkCredential("هاست شماsmtp آدرس", "password");
mysmtp.Send(myMessage);
}
}
4- تموم شد برای تست می تونید یه صفحه که تو سایتتون وجود نداره رو درخواست کنید.
پیشنهاد می کنم یه اکانت جیمیل مختص این کار بسازید تا کل خطاهای سایتهاتون رو یکجا ببینید :دی
اگه هاست ندارید می تونید از smtp رایگان گوگل استفاده کنید (کافیه یه جیمیل داشته باشید)
Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs)
If HttpContext.Current.Server.GetLastError() IsNot Nothing Then
Dim myException As Exception = HttpContext.Current.Server.GetLastError().GetBaseE xception()
Dim mailSubject As String = "Error in page " & Request.Url.ToString()
Dim message As String = String.Empty
message &= "<strong>Message</strong><br />" & myException.Message & "<br />"
message &= "<strong>StackTrace</strong><br />" & myException.StackTrace & "<br />"
message &= "<strong>Query String</strong><br />" & Request.QueryString.ToString() & "<br />"
Dim myMessage As New MailMessage
myMessage.Subject = "Error in page " & Request.Url.ToString()
myMessage.Body = message
myMessage.From = New MailAddress("from email", "display name")
myMessage.To.Add(New MailAddress("ایمیل شما"))
myMessage.IsBodyHtml = True
Dim mysmtp As New SmtpClient
mysmtp.Host = "smtp.gmail.com"
mysmtp.Credentials = New Net.NetworkCredential("Yourgmailadress", "gmailpass")
mysmtp.Port = 587
mysmtp.EnableSsl = True
mysmtp.Send(myMessage)
End If
End Sub
public void Application_Error(object sender, EventArgs e)
{
if (HttpContext.Current.Server.GetLastError() != null) {
Exception myException = HttpContext.Current.Server.GetLastError().GetBaseE xception();
string mailSubject = "Error in page " + Request.Url.ToString();
string message = string.Empty;
message += "<strong>Message</strong>" + myException.Message + "";
message += "<strong>StackTrace</strong>" + myException.StackTrace + "";
message += "<strong>Query String</strong>" + Request.QueryString.ToString() + "";
MailMessage myMessage = new MailMessage();
myMessage.Subject = "Error in page " + Request.Url.ToString();
myMessage.Body = message;
myMessage.From = new MailAddress("from email", "display name");
myMessage.To.Add(new MailAddress("ایمیل شما"));
myMessage.IsBodyHtml = true;
SmtpClient mysmtp = new SmtpClient();
mysmtp.Host = "smtp.gmail.com";
mysmtp.Credentials = new Net.NetworkCredential("Yourgmailadress", "gmailpass");
mysmtp.Port = 587;
mysmtp.EnableSsl = true;
mysmtp.Send(myMessage);
}
}