Steps:
1.Create an ASP.NET web site.
2.Add a class ErrorPage.cs in the App_Code folder.
3.Add the following variable in the ErrorPage.cs file
//Declare the private HttpApplication variable private HttpApplication _application; void IHttpModule.Init (HttpApplication application) { _application = application; //check whether the ErrorHandling values is Application type set in the web.config //file or not. If yes then declare an EventHandler if (GetValue("ErrorHandling") == "Application") _application.Error += new EventHandler(ErrorPageHandler); } private void ErrorPageHandler(Object sender, EventArgs e) { //fetch the error ProcessException(_application.Server.GetLastError()); } //store the error in the Cache private void ProcessException(Exception exception) { HttpContext.Current.Cache["Error"] = HttpContext.Current.Request.Url.ToString(); HttpContext.Current.Cache["ErrorMsg"] = exception.Message; HttpContext.Current.Cache["StackTrace"] = exception.StackTrace; HttpContext.Current.Response.Redirect(GetValue("SiteUrl") + "/Error.aspx"); } //fetch the value from the web.config file public string GetValue(string Key) { string ret = System.Web.Configuration.WebConfigurationManager.AppSettings[Key]; return ret; } public void Dispose() { }
4.Create an Error.aspx page and add the following html code
<asp:table width="100%" align="center" > <asp:tr> <asp:td style="text-align: left; font-weight: bold"> Error In <asp:/td> <asp:/tr> <asp:tr> <asp:td style="text-align: left; font-weight: bold"> <asp:asp:Label ID="lblError" runat="server" CssClass="x-panel-mc-font"><asp:/asp:Label> <asp:/td> <asp:/tr> <asp:tr> <asp:td style="text-align: left; font-weight: bold"> <asp:/td> <asp:/tr> <asp:tr> <asp:td style="text-align: left; font-weight: bold"> Error Message <asp:/td> <asp:/tr> <asp:tr> <asp:td style="text-align: left;"> <asp:asp:Label ID="lblErrorMsg" runat="server" CssClass="x-panel-mc-font"><asp:/asp:Label> <asp:/td> <asp:/tr> <asp:tr> <asp:td style="text-align: left;"> <asp:/td> <asp:/tr> <asp:tr> <asp:td style="text-align: left; font-weight: bold"> Stack Track <asp:/td> <asp:/tr> <asp:tr> <asp:td style="text-align: left;"> <asp:asp:Label ID="lblStackTrace" runat="server" CssClass="x-panel-mc-font"><asp:/asp:Label> <asp:/td> <asp:/tr> <asp:tr> <asp:td style="text-align: left;"> <asp:/td> <asp:/tr> <asp:/table>
Here I have used 3 lables to show the page name (from where error is generated), Error Message and Stack Track.
5.Add the following code in the Error.aspx.cs page
protected void Page_Load(object sender, EventArgs e) { if (Cache["Error"] != null) lblError.Text = Cache["Error"].ToString(); if (Cache["ErrorMsg"] != null) lblErrorMsg.Text = Cache["ErrorMsg"].ToString(); if (Cache["StackTrace"] != null) lblStackTrace.Text = Cache["StackTrace"].ToString(); }
Fetched the errors from the Cache and showing in the labels.
6.In the default.aspx page add a button control, and add the following code in the button click event.
int a = 1, b = 0; int c = a / b;
Generating the error.
7.Add the following setting in the web.config file
<asp:appSettings> <asp:add key="SiteUrl" value="http://localhost:1371/CustomeErrorHandling"/> <asp:add key="ErrorHandling" value="Application"/> <asp:/appSettings>
And add in the <httpModules> section
<asp:add type="ErrorPage" name="ErrorPageHandler">
8.Now run the application
9.Click on the Show Error button, then the error will be show in the following manner.
Note: Do not use try..catch block in the code behind page, If you use then custome error will not work. i.e. If I write the code in the following manner
try { int a = 1, b = 0; int c = a / b; } catch { }
Then the error page will not show.
Download :