Rückgabe von JSON-Ergebnis aus einer benutzerdefinierten exception filter?

Ich möchte erstellen Sie eine benutzerdefinierte exception filter, abfangen von Ausnahmen, die geworfen in controller-Aktionen, die JSON-Ergebnisse.

Ich würde gerne umgestalten der folgenden action-Methode:

        public JsonResult ShowContent()
    {
        try
        {
            //Do some business logic work that might throw a business logic exception ...
            //throw new ApplicationException("this is a business exception");

            var viewModel = new DialogModel
                                {
                                    FirstName = "John",
                                    LastName = "Doe"
                                };

            //Other exceptions that might happen:
            //throw new SqlException(...);
            //throw new OtherException(...);
            //throw new ArgumentException("this is an unhandeled exception");

            return
                Json(
                    new
                        {
                            Status = DialogResultStatusEnum.Success.ToString(),
                            Page = this.RenderPartialViewToString("ShowContent", viewModel)
                        });
        }
        catch (ApplicationException exception)
        {
            return Json(new { Status = DialogResultStatusEnum.Error.ToString(), Page = exception.Message });
        }
        catch (Exception exception)
        {
            return Json(new { Status = DialogResultStatusEnum.Exception.ToString(), Page = "<h2>PROBLEM!</h2>" });
        }
    }
}

Was ich möchte zu tun ist, erstellen Sie eine benutzerdefinierte exception-filter-Attribut, werden alle Ausnahmen abzufangen, geworfen in die Handlung folgt der folgenden Logik:

  1. Überprüfen, ob es war eine Ausnahme
    • No: Rückkehr
    • ja:
      • Wenn BusinessLogic Ausnahme – wieder eine JSON-Ergebnis
      • Wenn andere unbehandelte Ausnahme:
        • Log
        • Rückkehr eine andere JSON-Ergebnis mit einem anderen Ergebnis-code
InformationsquelleAutor Elie | 2011-03-05
Schreibe einen Kommentar