JsonResult to derive from ObjectResult.

Good point, yes it will. It should probably live on a static property in this class (Lazy initialized).

The situation is not as horrible as the one in the client, because by default you are getting formatters from the collection, but if you hit the fallback you have a serious perf issue. We can alternatively create a defaultjsonformatter in the DI system in a singleton. It's cleaner and more appropriate.