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:
- Ü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
Du musst angemeldet sein, um einen Kommentar abzugeben.
Fand ich es möglich, dieses problem zu lösen, verwenden Sie den code, der sich in dieser Artikel (mit geringfügigen änderungen.)
ExceptionFilterAttribute
stattdessen verwendet werden? (Ich war nicht in der Lage zu finden, die KlasseActionExecutedContext
).Finden Sie diesen link, um zu sehen, wie erstellen und verwenden HandleError-Attribut
*BEARBEITEN für HandleAttribute für Aktionen*