MVC3 requests a lot more than just the controllers from DependencyResolver . For most of them, MVC3 reverts to the default implementation if DependencyResolver does not return an instance.
In your case, it requests an IControllerFactory , which is unknown to your IoC container, and it throws an exception that gets into the UnityServiceLocator implementation, and returns null. Then MVC returns to the factory default controller.
Unlike other containers, IoC Unity does not provide the optional TryResolve and therefore does not support the correct, exclusive DependencyResolver implementation.
source share