Returning JSON errors from Sitecore MVC controllers
ASP.NET MVC gives us IExceptionFilter
, with which we can create custom, global exception handlers to apply to controller actions.
We can apply this filter to all Action methods, by adding our filter to the list of global filters:
and wiring this up to our application in our Application_Start
method:
In Sitecore
As you may expect, Sitecore exposes this functionality as pipeline processors. Sitecore defined a custom IExceptionFilter
implementation (see our snippet above) which kicks off the mvc.exception pipeline, passing along the ExceptionContext
object.
As client developers, it is our job to create an appropriate processor to accept the ExceptionContext
and do something with it. Let’s run through an example where we want to return a JSON representation of the error, loaded with as much useful information as possible.
For more reading on Sitecore controller actions returning JSON, have a look at John West’s post
So, first up, create an empty handler class, which inherits from ExceptionProcessor
:
Create a Web.config include, to add this processor to the mvc.exception pipeline:
Ok! Now our JSONExceptionHandler
class will be called each time an exception occurs in MVC code. So, let’s grab all the detail we can from the ExceptionContext
class and return it as JSON:
This will produce a result such as:
Happy hacking!