By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
424,968 Members | 1,588 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 424,968 IT Pros & Developers. It's quick & easy.

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

P: n/a

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)


Aug 4 '08 #1
Share this Question
Share on Google+
5 Replies


P: n/a
On Aug 4, 3:53*am, "rote" <naijaco...@hotmail.comwrote:
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

Aug 4 '08 #2

P: n/a
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" <al************@gmail.comwrote in message
news:78**********************************@d77g2000 hsb.googlegroups.com...
On Aug 4, 3:53 am, "rote" <naijaco...@hotmail.comwrote:
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
Aug 4 '08 #3

P: n/a
"Patrick.O.Ige" <na********@hotmail.comwrote in message
news:eh**************@TK2MSFTNGP03.phx.gbl...
But in asp.net 2.0 there is no Application_EndRequest event in the global
asax
???

http://msdn.microsoft.com/en-us/libr...st(VS.80).aspx

protected void Application_EndRequest (Object sender, EventArgs e)
{

}
--
Mark Rae
ASP.NET MVP
http://www.markrae.net

Aug 4 '08 #4

P: n/a
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" <na********@hotmail.comwrote in message news:%2****************@TK2MSFTNGP05.phx.gbl...
>
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)


Aug 4 '08 #5

P: n/a
On Aug 4, 2:45*pm, "Patrick.O.Ige" <naijaco...@hotmail.comwrote:
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" <alexey.smir...@gmail.comwrote in message

news:78**********************************@d77g2000 hsb.googlegroups.com...
On Aug 4, 3:53 am, "rote" <naijaco...@hotmail.comwrote:


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
Aug 4 '08 #6

This discussion thread is closed

Replies have been disabled for this discussion.