Если нужно как-то уведомить клиента об ошибке, бросаем типизированное исключение, ловим его в контроллере и возвращаем JSON-объект с полем Error, в котором записан "ключ" ошибки. Для этого создан класс JsonErrorViewModel:
JsonErrorViewModel.cs
Пример использования:
controller.cs
Если хочется отлавливать все unhandled exceptions контроллера и возвращать человечный JSON, в код контроллера нужно добавить:
OnException.cs