我的ASP.NET MVC应用程序启动速度非常慢(首次渲染时最少20秒)。它在bin文件夹中有批次的程序集。
我理解运行时扫描所有程序集,查找Controller
类。我想这种反射会很慢。我们在共享主机上,所以第一次加载非常慢,并且有很多首次加载,因为应用程序池经常被回收。
我见过很多使用IOC容器手动注册控制器的例子。我们不使用IOC。
那么,如何手动注册控制器呢?我想在Application_Start
或类似的事情中这样做。
修改。我知道这不会完全解决慢启动问题。但它可能有所帮助。所以没有必要阻止我尝试,因为我们决定尝试:)。
答案 0 :(得分:4)
您需要覆盖DefaultControllerFactory。然后将其设置为 Application_Start 。
ControllerBuilder.Current.SetControllerFactory(typeof (CustomControllerFactory));
示例 -
仅供参考: Mark Seemann (author of Dependency Injection in .Net)说"创建对象实例是.NET Framework非常快速的事情。您的应用程序可能出现的任何性能瓶颈都会出现在其他地方。"