如何让IIS中托管的.Net Core网站立即启动?

时间:2017-10-03 19:04:01

标签: .net iis asp.net-core

此博客文章解释了当IIS中托管.Net Core网站时,在第一个请求进入IIS之前,网站代码实际上并未运行:

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

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

3 个答案:

答案 0 :(得分:3)

我尝试了我读过的每个自动启动选项,最后想出了解决我问题的一个组合。在应用程序池集"启动模式"到" AlwaysRunning"并在网站上,设置" Preload Enabled" to" true"。使用这两个设置,应用程序立即启动。现在,我发现了一些意外的事情。当网站处于停止状态时,我的应用程序继续运行。我发现如果我想要停止我的应用程序,我必须停止应用程序池,而不是网站。

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

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

答案 1 :(得分:0)

我通过@eric尝试了上面的解决方案,但它本身无法工作。最终,把这个添加到我的.CSPROJ文件中(除了他的建议):

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

答案 2 :(得分:-1)

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

更新:请参阅以下文章中的第6点:

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