如何在ASP.Net Core API的startup.cs中调用控制器方法?我想在应用程序启动时构建缓存。请帮忙。 提前致谢
答案 0 :(得分:3)
你不能和你不会。请求需要连接,并且在启动时,应用程序尚未完全配置/启动。另外请求需要一个http上下文实例(基本上代表请求),您无法从Startup
执行此操作。
基本上它归结为两个选项:
创建一个powershell / batch / bash脚本,在部署或启动应用程序时调用端点。
如果您使用IIS或Azure App Service托管您的应用程序,则可以使用web.config
中的Custom Warm-up设置。
<applicationInitialization>
<add initializationPage="/" hostName="[app hostname]" />
<add initializationPage="/Home/About" hostname="[app hostname]" />
</applicationInitialization>
选项是重构代码并将需要缓存的内容提取到服务中,然后在应用程序启动期间解析它并运行一次。使用ASP.NET Core,这应该在Program.cs
的{{1}}方法中完成。
请参阅my answer here,了解如何在应用启动期间设置预热。该帖子是关于应用迁移,但可以应用相同的技术进行缓存预热。
请勿在{1}}内进行预热,因为它在ASP.NET Core 1.x中很常见,因为像Main
这样的工具会在发现Startup.Configure
时执行它。
答案 1 :(得分:0)
您可以在单独的服务中提取控制器方法的逻辑,并在启动应用程序时使用它