How to catch error 401 access denied and redirect to custom error page ?

Discussion in 'ASP .Net' started by rote, Aug 4, 2008.

  1. rote

    rote Guest

    I'm using ASP.NET 2.0 and i have copied and pasted the code below to my
    Global.asax file but it desn't trap
    the error
    I want to trap the 401 access denied
    void Application_Error(object sender, EventArgs e)
    {


    Exception exception = Server.GetLastError();

    try

    {

    HttpException httpException = (HttpException)exception;

    int httpCode = httpException.GetHttpCode();

    switch (httpCode)

    {

    case 401: Response.Redirect("~/Pages/Error/NoAccess.aspx"); break;

    case 404: Response.Redirect("~/Pages/Error/PageNotFound.aspx"); break;

    default: Response.Redirect("~/Pages/Error/Generic.aspx"); break;

    }

    }

    catch { }

    Server.ClearError();

    }
    I know i can't use the normal custom error in the web config either beacuse
    it doesn't work
    Any ideas how to trap this?

    <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">


    <error statusCode="401" redirect="accessdenied.htm" ></customErrors>
    HTTP Error 401.1 - Unauthorized: Access is denied due to invalid
    credentials.
    Internet Information Services (IIS)
     
    rote, Aug 4, 2008
    #1
    1. Advertising

  2. Re: How to catch error 401 access denied and redirect to custom errorpage ?

    On Aug 4, 3:53 am, "rote" <> wrote:
    > I'm using ASP.NET 2.0 and i have copied and pasted the code below to my
    > Global.asax file but it desn't trap
    > the error
    > I want to trap the 401 access denied
    > void Application_Error(object sender, EventArgs e)
    > {
    >
    > Exception exception = Server.GetLastError();
    >
    > try
    >
    > {
    >
    >  HttpException httpException = (HttpException)exception;
    >
    > int httpCode = httpException.GetHttpCode();
    >
    > switch (httpCode)
    >
    > {
    >
    >  case 401: Response.Redirect("~/Pages/Error/NoAccess.aspx"); break;
    >
    > case 404: Response.Redirect("~/Pages/Error/PageNotFound.aspx"); break;
    >
    > default: Response.Redirect("~/Pages/Error/Generic.aspx"); break;
    >
    >  }
    >
    > }
    >
    > catch { }
    >
    > Server.ClearError();
    >
    > }
    >
    > I know i can't use the normal custom error in the web config either beacuse
    > it doesn't work
    > Any ideas how to trap this?
    >
    > <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
    >
    > <error statusCode="401" redirect="accessdenied.htm" ></customErrors>
    > HTTP Error 401.1 - Unauthorized: Access is denied due to invalid
    > credentials.
    > Internet Information Services (IIS)


    Look at the following tip
    http://www.codeproject.com/KB/aspnet/Custon401Page.aspx
     
    Alexey Smirnov, Aug 4, 2008
    #2
    1. Advertising

  3. Thanks Alexey.
    But in asp.net 2.0 there is no Application_EndRequest event in the global
    asax
    and by the way i have to disable Allow ananonymous access..
    Any ideas

    "Alexey Smirnov" <> wrote in message
    news:...
    On Aug 4, 3:53 am, "rote" <> wrote:
    > I'm using ASP.NET 2.0 and i have copied and pasted the code belowe global
    > .as to my
    > Global.asax file but it desn't trap
    > the error
    > I want to trap the 401 access denied
    > void Application_Error(object sender, EventArgs e)
    > {
    >
    > Exception exception = Server.GetLastError();
    >
    > try
    >
    > {
    >
    > HttpException httpException = (HttpException)exception;
    >
    > int httpCode = httpException.GetHttpCode();
    >
    > switch (httpCode)
    >
    > {
    >
    > case 401: Response.Redirect("~/Pages/Error/NoAccess.aspx"); break;
    >
    > case 404: Response.Redirect("~/Pages/Error/PageNotFound.aspx"); break;
    >
    > default: Response.Redirect("~/Pages/Error/Generic.aspx"); break;
    >
    > }
    >
    > }
    >
    > catch { }
    >
    > Server.ClearError();
    >
    > }
    >
    > I know i can't use the normal custom error in the web config either
    > beacuse
    > it doesn't work
    > Any ideas how to trap this?
    >
    > <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
    >
    > <error statusCode="401" redirect="accessdenied.htm" ></customErrors>
    > HTTP Error 401.1 - Unauthorized: Access is denied due to invalid
    > credentials.
    > Internet Information Services (IIS)


    Look at the following tip
    http://www.codeproject.com/KB/aspnet/Custon401Page.aspx
     
    Patrick.O.Ige, Aug 4, 2008
    #3
  4. You'll need to convert this code to C#, but it works in VB.NET ...

    In global.asax :

    Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs)
    Server.Transfer("Errors.aspx")
    End Sub

    Errors.aspx :
    --------------------
    <html>
    <script language="VB" runat="server">
    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Dim errMessage As String = ""
    Dim appException As System.Exception = Server.GetLastError()
    If (TypeOf (appException) Is HttpException) Then
    Dim checkException As HttpException = CType(appException, HttpException)
    Select Case checkException.GetHttpCode
    Case 400
    errMessage &= "Bad request. The file size is too large."
    Case 401
    errMessage &= "You are not authorized to view this page."
    Case 403
    errMessage &= "You are not allowed to view that page."
    Case 404
    errMessage &= "The page you have requested can't be found."
    Case 408
    errMessage &= "The request has timed out."
    Case 500
    errMessage &= "The server can't fulfill your request."
    Case Else
    errMessage &= "The server has experienced an error."
    End Select
    Else
    errMessage &= "The following error occurred<BR>" & appException.ToString
    End If
    ErrorMessage.Text = errMessage & "<BR>We're sorry for the inconvenience."
    Server.ClearError()
    End Sub
    </script>
    <body>
    <hr>
    <asp:label id="ErrorMessage" font-size="12" font-bold="true" runat=server/>
    <hr>
    </body>
    </html>
    --------------

    That traps 401, and the other listed errors, fine.



    Juan T. Llibre, asp.net MVP
    asp.net faq : http://asp.net.do/faq/
    foros de asp.net, en español : http://asp.net.do/foros/
    ======================================
    "rote" <> wrote in message news:%...
    >
    > I'm using ASP.NET 2.0 and i have copied and pasted the code below to my Global.asax file but it desn't trap
    > the error
    > I want to trap the 401 access denied
    > void Application_Error(object sender, EventArgs e)
    > {
    >
    >
    > Exception exception = Server.GetLastError();
    >
    > try
    >
    > {
    >
    > HttpException httpException = (HttpException)exception;
    >
    > int httpCode = httpException.GetHttpCode();
    >
    > switch (httpCode)
    >
    > {
    >
    > case 401: Response.Redirect("~/Pages/Error/NoAccess.aspx"); break;
    >
    > case 404: Response.Redirect("~/Pages/Error/PageNotFound.aspx"); break;
    >
    > default: Response.Redirect("~/Pages/Error/Generic.aspx"); break;
    >
    > }
    >
    > }
    >
    > catch { }
    >
    > Server.ClearError();
    >
    > }
    > I know i can't use the normal custom error in the web config either beacuse it doesn't work
    > Any ideas how to trap this?
    >
    > <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
    >
    >
    > <error statusCode="401" redirect="accessdenied.htm" ></customErrors>
    > HTTP Error 401.1 - Unauthorized: Access is denied due to invalid credentials.
    > Internet Information Services (IIS)
    >
    >
    >
    >
    >
    >
     
    Juan T. Llibre, Aug 4, 2008
    #4
  5. Re: How to catch error 401 access denied and redirect to custom errorpage ?

    On Aug 4, 2:45 pm, "Patrick.O.Ige" <> wrote:
    > Thanks Alexey.
    > But in asp.net 2.0 there is no Application_EndRequest event in the global
    > asax
    > and by the way i have to disable Allow ananonymous access..
    > Any ideas
    >
    > "Alexey Smirnov" <> wrote in message
    >
    > news:...
    > On Aug 4, 3:53 am, "rote" <> wrote:
    >
    >
    >
    >
    >
    > > I'm using ASP.NET 2.0 and i have copied and pasted the code belowe global
    > > .as to my
    > > Global.asax file but it desn't trap
    > > the error
    > > I want to trap the 401 access denied
    > > void Application_Error(object sender, EventArgs e)
    > > {

    >
    > > Exception exception = Server.GetLastError();

    >
    > > try

    >
    > > {

    >
    > > HttpException httpException = (HttpException)exception;

    >
    > > int httpCode = httpException.GetHttpCode();

    >
    > > switch (httpCode)

    >
    > > {

    >
    > > case 401: Response.Redirect("~/Pages/Error/NoAccess.aspx"); break;

    >
    > > case 404: Response.Redirect("~/Pages/Error/PageNotFound.aspx"); break;

    >
    > > default: Response.Redirect("~/Pages/Error/Generic.aspx"); break;

    >
    > > }

    >
    > > }

    >
    > > catch { }

    >
    > > Server.ClearError();

    >
    > > }

    >
    > > I know i can't use the normal custom error in the web config either
    > > beacuse
    > > it doesn't work
    > > Any ideas how to trap this?

    >
    > > <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">

    >
    > > <error statusCode="401" redirect="accessdenied.htm" ></customErrors>
    > > HTTP Error 401.1 - Unauthorized: Access is denied due to invalid
    > > credentials.
    > > Internet Information Services (IIS)

    >
    > Look at the following tiphttp://www.codeproject.com/KB/aspnet/Custon401Page.aspx- Hide quoted text -
    >
    > - Show quoted text -


    Hi Patrick

    you just need to add the code to you global.asax. It simply does not
    add all methods by default... Moreover, if you may access the IIS, you
    might try to use custom 401. Using the IIS Manager, go to the
    properties of your site, then go to the Custom Errors tab to Edit the
    various 401 errors and assign a custom redirection.

    Hope this helps
     
    Alexey Smirnov, Aug 4, 2008
    #5
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Rich
    Replies:
    1
    Views:
    724
    =?Utf-8?B?RXNraW1v?=
    May 26, 2005
  2. ElGordo
    Replies:
    5
    Views:
    18,643
    Karl Seguin
    May 10, 2005
  3. Patrick.O.Ige

    'HTTP/1.1 401 Access Denied'.error

    Patrick.O.Ige, Oct 12, 2005, in forum: ASP .Net
    Replies:
    2
    Views:
    7,132
    Patrick.O.Ige
    Oct 13, 2005
  4. Tim Payne

    401 Access Denied Error

    Tim Payne, Apr 3, 2006, in forum: ASP .Net
    Replies:
    2
    Views:
    394
    Craig Deelsnyder
    Apr 3, 2006
  5. Alex Washtell via .NET 247

    Web Service + Anon Access, but getting 401 Access Denied Error

    Alex Washtell via .NET 247, Apr 5, 2005, in forum: ASP .Net Web Services
    Replies:
    1
    Views:
    198
    Mauro Ottaviani [MSFT]
    Apr 5, 2005
Loading...

Share This Page