繁体   English   中英

如何在 IIS (a) 网站重启和 (b) 重新部署时预热托管在 IIS 中的 asp.net 核心应用程序?

[英]How to warmup an asp.net core app hosted in IIS (a) on website restart and (b) on redeploy?

我在 IIS 中托管了一个 asp.net core 2.0 应用程序。 该应用程序仅在至少一个网络请求被发送到网站时启动。 但是,我需要在应用程序 (a) 在 IIS 中重新启动和 (b) 在重新部署(发布到文件夹)时启动该应用程序。 通过“开始”,我的意思是构造了Startup类并调用了它的 ConfigureServices(...) 和 Configure(...) 方法,因为我已经配置了一些单例服务,这些服务需要在 Web 主机启动后立即实例化开始而不是在第一个 Web 请求进入时立即启动。

这是我的应用程序的入口点:

public class Program
{
    public static void Main(string[] args)
    {
        Log.Logger = new LoggerConfiguration()
            .MinimumLevel.Debug()
            .MinimumLevel.Override("Microsoft", LogEventLevel.Information)
            .Enrich.FromLogContext()
            .WriteTo.File("log.txt", rollOnFileSizeLimit: true, fileSizeLimitBytes: 10485760, retainedFileCountLimit: 10) // 10485760 Bytes = 10Megabytes
            .CreateLogger();

        try
        {
            Log.Information("Starting web host");
            BuildWebHost(args).Run();
        }
        catch (Exception ex)
        {
            Log.Fatal(ex, "Host terminated unexpectedly");
        }
        finally
        {
            Log.CloseAndFlush();
        }

    }

    public static IWebHost BuildWebHost(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .UseKestrel()
            .UseContentRoot(Directory.GetCurrentDirectory())
            .UseIISIntegration()
            .UseStartup<Startup>()
            .Build();
}

有许多选项可以自动向您的 Web 应用程序发送 HTTP 请求。

  • Uptimerobot是许多免费的第三方服务之一,它会定期向您的 Web 应用程序发送请求。
  • 创建并托管您自己的 Windows 服务(假设您倾向于 Microsoft 解决方案),以您希望的任何频率访问您的 Web 服务。
  • 创建一个带有计时器触发器的 Azure 函数(或 AWS Lambda),以您希望的任何频率访问您的 Web 服务。
  • 使用Azure DevOps等工具设置发布,其中包含向 Web 应用程序发送请求的发布后任务。
  • 安装并配置IIS 应用程序初始化模块以执行预热任务。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM