anon
anon

Reputation:

MVC Custom errors not working in IIS8.5 (but working locally)

I can't get ANY custom error pages to appear in IIS8.5!

When I run my MVC 5 app locally in Visual Studio, custom error pages are displayed. But when I deploy to IIS on my webserver, and navigate to the site sub-page with a 'bad URL' my custom 404 page should be displayed, but the default generic 404 page is shown instead.

Here is what I've done:

web.config

customError section has been deleted.

Added the following section

<system.webServer>
    <httpErrors errorMode="Custom" existingResponse="Replace">
      <remove statusCode="404" />
      <remove statusCode="500" />
      <error statusCode="404" responseMode="ExecuteURL" path="/Error/NotFound" />      
      <error statusCode="500" responseMode="ExecuteURL" path="/Error/ServerError" />      
    </httpErrors>
  </system.webServer>

Controller

namespace MyApp.Controllers
{
  [Authorize(Roles = "MyRole")]
  public class ErrorController : Controller
  {
    [AllowAnonymous]
    public ActionResult NotFound()
    {
        Response.StatusCode = 404;

        return View();
    }

    [AllowAnonymous]
    public ActionResult ServerError()
    {
        Response.StatusCode = 500;

        return View();
    }
  }
}

Views

Very simple and straight forwards (not included here).

IIS

Verified the IIS Error Page feature is identical to what's in my config. A page for each error status code. Feature and Pages are set to 'custom'.

Checked Windows Features\Web Server (IIS)\Web Server\Common HTTP Features\HTTP Errors is installed.

Developer Tools

Navigating to a sub-page spelt incorrectly shows I'm getting a 404 Client Error.

Help

I've tries many things! Am I missing something? IIS environmental issue, i.e. a setting somewhere?

Custom errors work in my IDE but not on IIS. I've spent over a day on this! Read many pages, articles, and similar questions on SO.

Upvotes: 0

Views: 1506

Answers (3)

Jilani pasha
Jilani pasha

Reputation: 407

the problem is with the path in web.config(path="/Error/NotFound"). the url path of NotFound page will be changed when you move your website under the Default Web Site. So, give the correct url of the page at path then it will work(this is worked for me).

Upvotes: 0

anon
anon

Reputation:

After several days of investigating, finally found the issue.

In IIS, my website was residing as an Application under the Default Web Site, e.g. Default Web Site\MyDevSite. (All my dev sites are under the default web site).

When I moved the website to it's own IIS site, custom error pages are now being displayed!

If anyone knowns the reason why having an Application in IIS prevents custom error pages from being displayed, please add a comment here. It would be good to understand why this occurs.

I hope this helps somebody out. Had me going for quite a while.

Upvotes: 1

John H
John H

Reputation: 14655

How are you browsing IIS? If you're doing it from the same machine, then you aren't going to see your custom error pages, because the customErrors section will default to using RemoteOnly if not specified.

Upvotes: 0

Related Questions