Aktivieren Sie benutzerdefinierte Fehler in Azure

Ich bin nicht in der Lage zu setzen IIS Dienste meiner benutzerdefinierte Fehlerseiten für die Fehler außerhalb der MVC pipeline. Wenn ich eine exception werfen, im inneren ein controller es werden alle Datei, die Application_Error event-handles, die:

    protected void Application_Error(object sender, EventArgs e)
    {
        var error = Server.GetLastError();

        var routeData = new RouteData();
        routeData.Values["Controller"] = "Error";
        routeData.Values["Area"] = "";
        routeData.Values["Exception"] = error;

        if (error is HttpException)
        {
            switch (((HttpException)error).GetHttpCode())
            {
                case 401:
                    routeData.Values["Action"] = "NotAllowed";
                    break;

                case 403:
                    routeData.Values["Action"] = "NotAllowed";
                    break;

                case 404:
                    routeData.Values["Action"] = "NotFound";
                    break;
                default:
                    routeData.Values["Action"] = "ServerError";
                    break;
            }
        }
        else
        {
            routeData.Values["Action"] = "ServerError";
        }

        Response.Clear();
        Server.ClearError();

        IController controller = new ErrorController();
        controller.Execute(new RequestContext(new HttpContextWrapper(((MvcApplication)sender).Context), routeData));
    }

Aber wenn ich durchsuchen, um eine nicht existierende URL, IIS behandelt der 404-Fehler (oder ein anderer Fehler), dass Sie mir den standard-IIS-Fehlermeldung und komplett ignorieren meine web.config Einstellungen:

 <system.web>
  <customErrors mode="On" redirectMode="ResponseRewrite" defaultRedirect="/error">
    <error statusCode="401" redirect="/error/notallowed" />
    <error statusCode="403" redirect="/error/notallowed" />
    <error statusCode="404" redirect="/error/notfound" />
    <error statusCode="500" redirect="/error/servererror" />
  </customErrors>
</system.web>

<system.webServer>
  <httpErrors errorMode="Custom" defaultResponseMode="ExecuteURL">
    <clear />
    <error statusCode="401" path="/error/notallowed" />
    <error statusCode="403" path="/error/notallowed" />
    <error statusCode="404" path="/error/notfound" />
    <error statusCode="500" path="/error/servererror" />
  </httpErrors>
</system.webServer>

Aktivieren Sie benutzerdefinierte Fehler in Azure

/error/* behandelt wird, von einem controller in meiner Anwendung. Was kann ich tun, um IIS ausführen der benutzerdefinierten Fehler Weg, statt der Fütterung mir die standard-Fehler-Seite?

Dies ist ASP.NET MVC-3, Betrieb auf Azure. Es funktioniert nicht, gerade unter IIS, sondern der Entwicklungs-server nicht ausführen der Steuerung.

InformationsquelleAutor CMircea | 2012-04-07
Schreibe einen Kommentar