【问题标题】:.NET Core with applicationInitialization & Kestrel.NET Core 与 applicationInitialization & Kestrel
【发布时间】:2018-03-26 18:02:55
【问题描述】:

红隼是否支持 applicationInitialization 功能?

这是您可以定义将在应用程序启动后执行的页面(或页面)的功能。基本上是为了预热应用程序。

如果不支持,是否有 Kestrel 的等价物?

【问题讨论】:

  • 如果这样的功能甚至可以用于 PHP 网站,ruslany.net/2015/09/… 我看不出它不能用于 ASP.NET Core 的原因。
  • @LexLi 如果您使用 IIS 则可以,但我使用的是独立的 Kestrel。
  • 那么从技术上讲,该场景不需要应用程序初始化。 IIS 需要它,因此它可以在 ASP.NET/PHP 完成初始化之前显示警告页面。但是当您运行 Kestrel 时,无论如何您都需要等到整个初始化完成,并且不可能对其进行预热。这正是您需要将 Kestrel 置于反向代理服务器(例如 IIS)之后的原因。
  • @LexLi 您提出的每一点都是错误的。这种情况需要它,因为我已经对其进行了测试,第一次命中有性能损失。警告页面不适用于我,警告页面不是热身的唯一原因。这并不是为什么要把它放在反向代理后面的原因。即使你把它放在反向代理后面,也没有完成预热——IIS 不是唯一的 web 服务器——所以如果你把它放在 apache 或 nginx 后面,你如何解决预热问题——你知道你是怎么做的吗?说没有意义。
  • “警告页面不适用于我”,但这就是您可以从 IIS(或其他具有类似功能的服务器)获得的全部内容。 Microsoft 尚未计划实施您喜欢的那种“热身”,github.com/aspnet/Hosting/issues/809 您可以参考多个线程或创建自己的线程来 ping Microsoft 开发人员,如果这对您更有意义的话。

标签: windows iis .net


【解决方案1】:

如果时光倒流,大多数人会使用脚本来 ping 页面,以便他们的 Web 应用程序可以预热。后来微软为 IIS 7.5 及更高版本开发了应用程序初始化模块来简化这一点(以及一些额外的功能,比如显示警告页面)。

但是,如果我们将范围更改为 Kestrel,那么微软还没有计划实现类似的功能,正如 this 等 GitHub 线程所揭示的那样。

您可以使用 ping 作为一种解决方法,然后等待 Microsoft 是否改变主意。他们在将 URL 重写功能移植到 Kestrel 时这样做了,作为 middleware

同样,ASP.NET Core 是开源的,所以也许有人可以介入来实现这样的中间件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-23
    • 2019-10-02
    • 1970-01-01
    • 2020-06-15
    • 2021-03-09
    • 2018-02-11
    • 2021-08-19
    • 2017-02-19
    相关资源
    最近更新 更多