如何在每次重新启动或发布网站时手动创建 iis7.5 上 asp.net mvc 的第一个请求

本文关键字:iis7 创建 asp 第一个 请求 mvc net 重新启动 网站 布网站 | 更新日期: 2023-09-27 18:31:40

你们都知道:在IIS7.5上,第一个请求非常。所以我想也许我可以在每次网站启动、重新启动、周期时间完成后手动创建一个请求......等等。

我搜索了很多,然后我找到了自动启动功能:http://www.schwammysays.net/auto-starting-websites-on-iis-7-5/

添加后,我在 Global.asax 上的 Application_Start() 中手动创建一个请求

protected void Application_Start()
{
     ''    original logic here     ''
 System.Threading.Tasks.Task.Factory.StartNew(new Action(() =>
            {
                try
                {
                    // send request after 100 second
                    System.Threading.Thread.Sleep(1000 * 100 * 1);
                    WebClient webClient = new WebClient();
                    using (Stream stream = webClient.OpenRead(ConfigurationManager.AppSettings["InitialPath"]))
                    {
                        if (stream.CanRead)
                        {
                            log.Debug("warm success");
                        }
                        else
                        {
                            log.Debug("can't read");
                        }
                    }
                }
                catch (Exception ex)
                {
                    log.Error(ex);
                }
            }));
}

但问题是:1. 仅在 IIS7.5 循环时间结束时触发。重新启动网站、启动或发布网站(甚至更改 web.config)时不触发。2.有些网站还是没有被解雇,我不明白。

所以我正在搜索是否有其他方法可以在网站启动、更改、重新启动、IIS 周期时间结束时触发 Application_Start() 或创建请求?我的服务器是:视窗服务器 2008 r2

如何在每次重新启动或发布网站时手动创建 iis7.5 上 asp.net mvc 的第一个请求

您要查找的搜索词是"应用程序预热"。

您可以使用 IIS 7.5 的应用程序初始化模块。设置说明可在此处和此处找到。请注意,您需要对applicationHost.config进行一些编辑,并且需要专门为您的 .NET 框架版本进行设置。

然后,您可以在web.config中拥有这样的东西

<applicationInitialization
     doAppInitAfterRestart="true" >
   <add initializationPage="/" />
</applicationInitialization>

每次应用自动启动时,这将向应用的根目录 ( initializationPage="/") 发送请求。

答案在这里找到。