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

标签 c# asp.net-core iis

我在 IIS 中托管一个 asp.net core 2.0 应用程序。只有当至少一个网络请求被发送到网站时,该应用程序才会启动。但是,我需要应用程序在 (a) 在 IIS 中重新启动和 (b) 在 redployment(发布到文件夹)时启动。 “开始”是指构造了 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();
}

最佳答案

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

  • Uptimerobot是众多免费的第三方服务之一,它们会定期向您的 Web 应用程序发送请求。
  • 创建并托管您自己的 Windows 服务(假设您倾向于使用 Microsoft 解决方案),以您希望的任何频率访问您的网络服务。
  • 使用 timer trigger 创建一个 Azure 函数(或 AWS Lambda)以您希望的任何频率访问您的网络服务。
  • 使用 Azure DevOps 等工具设置发布其中包括向您的 Web 应用程序发送请求的发布后任务。
  • 安装和配置 IIS Application Initialization Module执行热身任务。

关于c# - 如何预热 IIS 中托管的 asp.net 核心应用程序 (a) 网站重启和 (b) 重新部署?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59183755/

相关文章:

c# - 以管理员身份运行时,DriveInfo.GetDrives() 不返回映射的驱动器

asp.net - 如何在 Razor 页面中重定向到自定义404页面

c# - 无法从另一个类调用方法

c# - Azure 上的 WCF 服务 - 超出“核心数”

asp.net-core - VB asp.net 到.net core

asp.net - 无法配置IIS/Asp.NET来同时处理许多异步请求

c# - 是否可以通过配置为 ASP.NET Web 应用程序中的传出 Web 请求启用 TLS?

.net - 无法复制文件 Microsoft.SqlServer.Types

c# - 轻推 WPF 窗口

c# - Stream 意外结束,内容可能已被另一个组件读取。 Microsoft.AspNetCore.WebUtilities.MultipartReaderStream