You have to use a custom controller factory by inheriting the DefaultControllerFactory and override the GetControllerType method.
// instantiate controllers that doesn't have "Controller" suffix.
public class CustomControllerFactory: DefaultControllerFactory
{
protected override Type GetControllerType(System.Web.Routing.RequestContext requestContext, string controllerName)
{
var controllersNs = "MvcApp.Controllers";
return Type.GetType(string.Format("{0}.{1}", controllersNs, controllerName));
}
}
And you have to register this controller factory in Global.asax.cs.
ControllerBuilder.Current.SetControllerFactory(new CustomControllerFactory());
Important: The DefaultControllerFactory does more work to improve the performance by caching the types and other stuff, you have to look into the source code to get a better idea.