Freigeben über


SPS 2003 : Custom error page for a status 404 error

I was recently working on SPS 2003 issue where we wanted to redirect the user to a custom error page. In MOSS we have an elaborate process to achieve the custom error page functionality.

After quite a bit of research I could find couple of ways but the best and most efficient one seems is to use the HTTP Module for the same. Certain important pointers to remember before using the sample code below. Firstly create your own custom page – preferably a layouts or application page in the layouts directory. Secondly the assembly will have to deployed to the GAC folder and add the Custom HTTP Module entry to the web.config. Lastly do an iisreset to ensure everything is reseted before use of http module.

<Sample code>

using System;
using System.Web;
using System.Net;

namespace Inter
{
    /// <summary>
    /// Summary description for Class1.
    /// </summary>
    public class Class1 : IHttpModule
    {
        public Class1()
        {
        }

        #region IHttpModule Members

        public void Init(HttpApplication context)
        {
            context.BeginRequest += new EventHandler(context_BeginRequest);
            context.EndRequest += new EventHandler(context_EndRequest);
        }

        public void Dispose()
        {
            // TODO:  Add CustomModule.Dispose implementation
        }

        #endregion

        private void context_BeginRequest(object sender, EventArgs e)
        {
            HttpApplication objHttp = (HttpApplication)sender;
            //objHttp.Context.Response.End();                      
        }

        private void context_EndRequest(object sender, EventArgs e)
        {
            HttpApplication objHttp = (HttpApplication)sender;

            if (objHttp.Context.Response.StatusCode == 404)
            {
                objHttp.Context.Response.Redirect("https://" + objHttp.Context.Request.Url.Authority + "/default.aspx");
            }
        }
    }

}

</Sample Code>

Comments

  • Anonymous
    June 13, 2010
    Thanks a lot, It was very helpful for me.

  • Anonymous
    July 01, 2010
    Hi, Your blog is great. I had used your code in my application but it is working for .aspx pages and when I type a non-existing html page in the site, it is not redirecting to custom error page. Can you please suggest. I had added ".html" extension in my website in IIS and also mapped it to "C:WINDOWSMicrosoft.NETFrameworkv2.0.50727aspnet_isapi.dll" in IIS so that HTTPModule code will be called as HTML page is treated as ASP.net resource but still not working. Please suggest. Thanks and regards.