title: Sitecore custom 404 handler in production
body: <p>I picked up the following code from Stackoverflow->a blog re handling custom 404 in Sitecore (which acutally does a 302 redirect to 404 page with status 200 which gets picked up by google as soft 404). </p>
  
  <p>While this works totally fine in our local test servers, the moment we drop it in production the site goes haywire and takes AGES e.g. 8-9 minutes to load and stuff. </p>
  
  <pre><code>public class ExecuteRequest : Sitecore.Pipelines.HttpRequest.ExecuteRequest
  {
      protected override void RedirectOnItemNotFound(string url)
      {
          var context = System.Web.HttpContext.Current;
  
          try
          {
              // Request the NotFound page
              var domain = context.Request.Url.GetComponents(
                  UriComponents.Scheme | UriComponents.Host, 
                  UriFormat.Unescaped);
  
              var content = WebUtil.ExecuteWebPage(
                  string.Concat(domain, url));
  
              // The line below is required for IIS 7.5 hosted 
              // sites or else IIS is gonna display default 404 page
              context.Response.TrySkipIisCustomErrors = true;
              context.Response.StatusCode = 404;
              context.Response.Write(content);
          }
          catch (Exception ex)
          {
              Log.Error(string.Format("Falling back to default redirection behavior. Reason for error {0}", ex), ex);
  
              // Fall back to default behavior on exceptions
              base.RedirectOnItemNotFound(url);
          }
  
          context.Response.End();
      }
  } 
  </code></pre>
  
  <p>P.S: I then replaced ExecuteRequest with my custom one in web.config.</p>
  
  <p>If you have experienced similar thing or know of any issue re this please do shed some light.</p>
  
  <p>Thanks in advance</p>