web-API-und MVC-exception handling

Sind wir derzeit wieder die Entwicklung unserer web forms-system in den web-API-und MVC (dies ist eine neue Technologie für uns)
Bisher scheint alles ok zu sein, aber wir werden kämpfen, um zurück zu senden Fehlern von Web-API-Anwendung, um die MVC-Anwendung. Wir erkennen, dass wir brauchen, um alle Ausnahmen erfassen und diese verwandeln sich in HTTP-Antworten

Web-API, Produkt-controller sieht wie folgt aus:

public HttpResponseMessage GetProducts()
    {
        BAProduct c = new BAProduct();
        var d = c.GetProducts();
         if (d == null)
            return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, "This is a custom error message");
        else
            return Request.CreateResponse(HttpStatusCode.OK, d);
    }

Dem MVC-Anwendung aufrufen, wird die web-API mit folgendem code:-

public T Get<T>()

               using (HttpClient client = new HttpClient())
                    {
                        client.BaseAddress = new Uri(Config.API_BaseSite);

                        client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
                        HttpResponseMessage response = client.GetAsync("api/myapplicaton/products").Result;
                        response.EnsureSuccessStatusCode();
                        T res = response.Content.ReadAsAsync<T>().Result;
                        return (T)res;
                    }
            }

Was wir versuchen zu erreichen ist, wenn eine HTTP-Fehlermeldung empfangen wird, von der web-API innerhalb der MVC-Anwendung, die Benutzer entweder weitergeleitet, um eine benutzerdefinierte Fehlerseite, oder zeigen Sie die benutzerdefinierte Fehlermeldung in der aktuellen Ansicht (je nach schwere des Fehlers).
Das Problem, das wir haben ist, dass:-

  1. Wie wir den Zugriff auf die benutzerdefinierte Fehlermeldung, die haben wir zurück geschickt? ( aus der Beispiel-code wäre dies "Dies ist eine benutzerdefinierte Fehlermeldung", haben Wir durch jedes Attribut im res und kann nicht sehen, diese Nachricht)

  2. Je nach status-code, wie wir erfassen diese und leiten Sie Benutzer, um individuelle Fehler-Seiten, d.h. die Seite 404, 500-Seite und anzeigen der benutzerdefinierten response-Nachricht, die gesendet wurde, zurück.
    wir haben seit der globalen.asax route

    protected void Application_Error(object sender, EventArgs e)
    {
        Exception exception = Server.GetLastError();
        Response.Clear();
        HttpException httpException = exception as HttpException;

jedoch unsere httpExecption ist immer NULL

Wir haben gesucht etc, und als der noch, nicht finden können, was gegebenenfalls
hoffentlich kann mir jemand weisen uns in die richtige Richtung.

InformationsquelleAutor Simon | 2013-12-29
Schreibe einen Kommentar