【问题标题】:How do I get a .Net Core website hosted in IIS to start immediately?如何让托管在 IIS 中的 .Net Core 网站立即启动?
【发布时间】:2017-10-03 19:04:00
【问题描述】:

这篇博文解释了当 .Net Core 网站托管在 IIS 中时,网站代码在第一个请求进入 IIS 之前实际上不会运行:

https://weblog.west-wind.com/posts/2016/Jun/06/Publishing-and-Running-ASPNET-Core-Applications-with-IIS

这正是我所看到的行为,一旦第一个请求进来,一切都开始运行。我有一个用例,我真的需要网站代码在 IIS 启动后立即启动。有没有办法在网站内以编程方式执行此操作或在配置中使用某些东西,所以我不必记得每次 IIS 重新启动时都 ping 我的网站?谢谢。

【问题讨论】:

  • 这是一个应用程序,而不是一个 html 页面。它需要启动,除非它持续运行。服务器和大多数托管服务提供商默认设置,如果一段时间后不使用,应用程序将进入休眠状态。通常你必须为永远在线支付更多费用,或者使用你自己的虚拟服务器等。

标签: .net iis asp.net-core


【解决方案1】:

我尝试了我读到的每个自动启动选项,最后想出了解决我问题的一个组合。在应用程序池上将“启动模式”设置为“AlwaysRunning”,在网站本身上,将“Preload Enabled”设置为“true”。使用这两个设置,应用程序会立即启动。现在,我确实发现了一些意想不到的东西。当网站处于停止状态时,我的应用程序继续运行。我发现如果我想停止我的应用程序,我必须停止应用程序池,而不是网站。

如果这不起作用,还要确保为 IIS 安装了应用程序初始化功能,因为它是可选的。

https://docs.microsoft.com/en-us/iis/get-started/whats-new-in-iis-8/iis-80-application-initialization

核心 3.1 更新: 我已确认此解决方案适用于 Core 3.1。如果您发现它不起作用,请仔细检查您是否为 IIS 安装了应用程序初始化功能。此解决方案的缺点是停止应用程序池会立即停止我的应用程序,而无法正常结束。如果未安装应用程序初始化功能,我的应用程序将在应用程序池停止时正常停止,但随后应用程序不会自动启动。

【讨论】:

  • 由于某种原因对我不起作用。 (已安装应用程序初始化功能、Windows Server 2012 R2、ASP.NET Core 3.0、进程内托管)
  • @Mike 我从未尝试过使用 Core 3.0。我希望这不是问题,因为有一天我肯定需要升级。安装应用程序初始化后机器是否重新启动?该功能告诉您无需重新启动即可工作,但这不是我的经验。
  • 同@Mike,使用ASP.NET Core 3.0,安装应用初始化功能,应用池有AlwaysRunning启动模式,站点开启预加载。 web.config 也启用了预加载。重启机器没有帮助。
  • 我刚刚尝试了 Asp.NET Core 3.0,它可以工作。如果有人感兴趣,只需添加此内容即可。
  • "当网站处于停止状态时,我的应用程序继续运行。我发现如果我想停止我的应用程序,我必须停止应用程序池,而不是网站。 "我在 Core 3.0 中也遇到了这个问题,假设这是一个错误是否安全?如果是这样,它是否在 3.1 中得到解决和/或 MS 是否在任何地方记录了这一点?
【解决方案2】:

我尝试了@eric 上面的解决方案,但它本身并不起作用。将此添加到我的 .CSPROJ 文件中(除了他的建议)终于成功了:

<PropertyGroup>
    <ServerGarbageCollection>true</ServerGarbageCollection>
    <ConcurrentGarbageCollection>false</ConcurrentGarbageCollection>
</PropertyGroup>

【讨论】:

    【解决方案3】:

    如果您使用的是 IIS,有一个复选框可以立即启动网站,您可以在 IIS 设置中尝试。

    更新:见下文第 6 点:

    https://docs.microsoft.com/en-us/aspnet/core/publishing/iis?tabs=aspnetcore2x

    【讨论】:

      猜你喜欢
      • 2015-08-16
      • 1970-01-01
      • 2020-07-26
      • 1970-01-01
      • 1970-01-01
      • 2020-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多