Thursday, May 9, 2013

Write ASP.NET Application Errors to Database


To detect the un-handled errors occured in the application we can use Application_Error method in Global.asax file.

Create a table in your Sql Server Database.

CREATE TABLE [dbo].[tblSyatemError](

[ErrorID] [int] IDENTITY(1,1) NOT NULL,

[System] [varchar](max) NULL,

[DateTime] [varchar](max) NULL,

[Message] [varchar](max) NULL,

[InnerException] [varchar](max) NULL,

[Source] [varchar](max) NULL,

[StackTrace] [varchar](max) NULL,

 CONSTRAINT [PK_tblSyatemError] PRIMARY KEY CLUSTERED

(

[ErrorID] ASC

)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]

) ON [PRIMARY]


Use below simple code in Global.asax Application_Error method to write the un-handled application level errors to the database.

void Application_Error(object sender, EventArgs args)
  {
        // Code that runs when an unhandled error occurs
     Exception e = Server.GetLastError();
     System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection("YourConnection");

        try
        {
            conn.Open();
            string query = "INSERT INTO tblSyatemError ([System],[DateTime],[Message],[InnerException],[Source],[StackTrace]) VALUES" +

           "('" + Request.Url.Host.ToLower().Replace("'", "") + "','" + DateTime.Now + "','" + e.Message.Replace("'", "") + "','" + e.InnerException.ToString().Replace("'", "") + "','" + e.Source.Replace("'", "") + "','" + e.StackTrace.Replace("'", "") + "')";

            using (System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand(query,conn))
            {
               cmd.ExecuteNonQuery();

            }

        }
        catch (Exception ex)
        {

        }
        finally
        {
            conn.Close();
            conn.Dispose();
        }
    }

No comments:
Write comments
Recommended Posts × +