Eigene Fehlerseiten in MVC5

Man findet im Netz viele Fragen und auch viele Lösungen zu eigenen 404 Fehlerseiten mit MVC5. Soviel Antworten wie es gibt, soviel Fehlschläge gibt es jedoch auch. Ich hatte bisher keine Lösung gefunden die mich wirklich zufrieden gestellt hat. Entweder war sie super kompliziert und aufwendig, hat nicht alle Fälle abgedeckt oder komische URLs sind dabei herausgekommen. Eine sehr gute Hilfe für mich war der Beitrag von Ben Foster welcher mich auch zu meiner Lösung geführt hat.

Als erstes legt man einen neuen Controller mit einer Action für den 404 Fehler an. Namen können beliebig gewählt werden.

/// <summary>
/// Handles error pages
/// </summary>
public class ErrorController : Controller
{
    /// <summary>
    /// 404 - Not Found
    /// </summary>
    /// <returns></returns>
    public ActionResult NotFound()
    {
        // set status code
        Response.StatusCode = 404;
        // show view
        return View();
    }
}

Anschließend muss noch in der Web.config unter der System.webServer Sektion das Error Handling eingetragen werden.

<httpErrors errorMode="Custom" existingResponse="Replace">
    <remove statusCode="404" />
    <error statusCode="404" path="/Error/NotFound" responseMode="ExecuteURL" />
</httpErrors>

Unter Path muss der entsprechende Controller und Action Name verwendet werden.