Custom error using Global.asax asp.net

I made a mistake; the page guides users in the event of an error in any application on the website. I did Global.asax

instead using Webconfig. My question is, is it possible to redirect the user out Global.asax

for these status codes "401", "404" and "500" in case of an error rather than using Webconfig?

In other words, using Global.aspx

and not Webconfig !? I'm just curious to know.

thank

+3


source to share


2 answers


    protected void Application_Error(Object sender, EventArgs e)
    {
         Exception ex = this.Server.GetLastError();

         if(ex is HttpException)
         {
              HttpException httpEx = (HttpException)ex;

              if(httpEx.GetHttpCode() == 401)
              {
                   Response.Redirect("YourPage.aspx");
              }
         }
    }

      



Yes it is possible. Here's a small sample code. This needs to be added to Global.asax.cs

.

+2


source


Never set customErrors

in Off

a Web.config file unless you have a handler Application_Error

in your file Global.asax

. Potentially compromising information about your website could be exposed to anyone who could cause an error on your website.

void Application_Error(object sender, EventArgs e)
{
  // Code that runs when an unhandled error occurs

  // Get the exception object.
  Exception exc = Server.GetLastError();

  // Handle HTTP errors
  if (exc.GetType() == typeof(HttpException))
  {
    // The Complete Error Handling Example generates
    // some errors using URLs with "NoCatch" in them;
    // ignore these here to simulate what would happen
    // if a global.asax handler were not implemented.
      if (exc.Message.Contains("NoCatch") || exc.Message.Contains("maxUrlLength"))
      return;

    //Redirect HTTP errors to HttpError page
    Server.Transfer("HttpErrorPage.aspx");
  }

  // For other kinds of errors give the user some information
  // but stay on the default page
  Response.Write("<h2>Global Page Error</h2>\n");
  Response.Write(
      "<p>" + exc.Message + "</p>\n");
  Response.Write("Return to the <a href='Default.aspx'>" +
      "Default Page</a>\n");

  // Log the exception and notify system operators
  ExceptionUtility.LogException(exc, "DefaultPage");
  ExceptionUtility.NotifySystemOps(exc);

  // Clear the error from the server
  Server.ClearError();
}

      

You can also get an error code once, for example



exc.GetHttpCode() == 403 so that 

if (exc!= null && httpEx.GetHttpCode() == 403)
    {
        Response.Redirect("/youraccount/error/forbidden", true);
    }
    else if (exc!= null && httpEx.GetHttpCode() == 404)
    {
        Response.Redirect("/youraccount/error/notfound", true);
    }
    else
    {
        Response.Redirect("/youraccount/error/application", true);
    }

      

Also see Custom error in global.asax

+1


source







All Articles