Re: 404 best practice
- From: Dunc <duncan.welch@xxxxxxxxx>
- Date: 31 May 2007 08:23:24 -0700
Thanks, Bruce. Unfortunately, the 404 page derives from a master
page, which checks session. After some research, it seems the
Application_Error no longer holds a reference to the current
HttpContext, so redirecting from that causes the 404 page to create
that obscure error about not having session enabled.
D
On 31 May, 16:00, bruce barker <nos...@xxxxxxxxxx> wrote:
a redirect is a 302. you should do a server transfer rather than a
client redirect.
-- bruce (sqlwork.com)
Dunc wrote:
I have a website where I wish to display a custom 404 error page when
applicable. I also want to ensure that when a search engine hits a
page that no longer exists, it gets a StatusCode of 404 so it will
eventually remove it from it's index.
Currently to do this, I'm capturing all errors using the
global.asax.cs -> Application_Error proc, setting the approriate
status code and redirecting:
if (CheckForErrorType(exc, "System.Web.HttpException") &&
exc.Message.ToString().IndexOf("does not exist") > 0)
{
Response.StatusCode = 404;
Response.Redirect("/pagenotfound.aspx", true);
}
When I load Fidder, it tells me that the missing page *is* being
loaded, returning a status code of 302 (object moved) then my friendly
error page is being loaded with the appropriate 404 code which is
useless.
My 404 page inherits from a Master Page, which checks for a Session so
I can't use a Server.Transfer as I get the error:
An exception of type 'System.Web.HttpException' occurred in
System.Web.dll but was not handled in user code
Additional information: Session state can only be used when
enableSessionState is set to true, either in a configuration file or
in the Page directive. Please also make sure that
System.Web.SessionStateModule or a custom session state module is
included in the <configuration>\<system.web>\<httpModules> section in
the application configuration.
Alternatively, I've tried using the CustomErrors tag in web.config:
<customErrors mode="RemoteOnly">
<error statusCode="404" redirect="/pagenotfound.aspx"/>
</customErrors>
Again, using Fiddler, it returns first the 302 status then the 404.
Has anyone else come across this issue and found a decent solution?
TIA- Hide quoted text -
- Show quoted text -
.
- References:
- 404 best practice
- From: Dunc
- Re: 404 best practice
- From: bruce barker
- 404 best practice
- Prev by Date: Re: ASP.NET suppress response HTML
- Next by Date: Re: PostBack before ViewState loaded in Browser give incorrect result
- Previous by thread: Re: 404 best practice
- Next by thread: Re: Page Reload
- Index(es):
Relevant Pages
|