在ASP.Net Core的startup.cs中调用一个控制器

时间:2017-11-19 06:22:28

标签: asp.net-core

如何在ASP.Net Core API的startup.cs中调用控制器方法?我想在应用程序启动时构建缓存。请帮忙。 提前致谢

2 个答案:

答案 0 :(得分:3)

你不能和你不会。请求需要连接,并且在启动时,应用程序尚未完全配置/启动。另外请求需要一个http上下文实例(基本上代表请求),您无法从Startup执行此操作。

基本上它归结为两个选项:

  1. 创建一个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>
    
  2. 选项是重构代码并将需要缓存的内容提取到服务中,然后在应用程序启动期间解析它并运行一次。使用ASP.NET Core,这应该在Program.cs的{​​{1}}方法中完成。

    请参阅my answer here,了解如何在应用启动期间设置预热。该帖子是关于应用迁移,但可以应用相同的技术进行缓存预热。

    请勿在{1}}内进行预热,因为它在ASP.NET Core 1.x中很常见,因为像Main这样的工具会在发现Startup.Configure时执行它。

答案 1 :(得分:0)

您可以在单独的服务中提取控制器方法的逻辑,并在启动应用程序时使用它