IIS 8.0 Asp.net 预热自动启动 & 应用程序初始化






4.94/5 (9投票s)
设置 IIS Asp.net 预热模块的步骤。 描述 Preload 的用法 - System.Web.Hosting.IProcessHostPreloadClient
- 引言
- 必备组件
- 创建您的预热脚本程序集
- 应用程序池:演示网站
- IIS Web 服务器:配置编辑器
- system.applicationHost/applicationPools
- system.applicationHost/ServiceAutoStartProviders
- system.applicationHost/Sites
- 应用程序初始化
- 最后一步:现在运行这个
- 参考
引言
我一直在研究 IIS asp.net 预热功能一段时间了,并且尝试了所有可能的方法来让我的预热脚本工作,但它未能初始化和自动启动。 在花了一些时间了解请求流程和内部机制后,我们能够找到解决方案。 本文在某种程度上将帮助您找到解决我们在 IIS 中启用预热脚本时可能遇到的大多数常见问题的方法。 我开始查看关于 IIS7.5 和自动启动应用程序池的一些文章,但几乎找不到在线资源可以为我提供清晰明了的步骤来启用此功能。 本文的总体目的是提供端到端的步骤以及可能会遇到的一些已知问题。 存在一个示例演示代码,您可以下载该代码来为您的网站设置预热功能。 我还没有深入解释为什么我们需要 IIS asp.net 预热,但我涵盖了将用于运行预热脚本的最可能的配置设置。
必备组件
应用程序初始化功能需要安装 IIS 8.0。 此外,需要安装 IIS "应用程序开发" 子功能中的应用程序初始化功能。 以下屏幕截图来自 Windows Server 2012 服务器管理器 UI,显示了应用程序初始化功能。 IIS 8.0 应用程序初始化设置 关键注意:重新启动服务器以使上述更改生效。 当我们必须在用户访问任何网页之前自动执行任何启动页面时,此初始化起着重要作用。 有时预热启动失败,因为需要在 [code] 下启用某些设置
创建您的预热脚本程序集
此预热脚本将在 IIS 应用程序池回收启动时或网站初始化时执行。 我们可以将各种场景嵌入到此启动脚本中。 我们可以使用缓存网页或准备好现成的报告或任何需要更长时间加载的繁重任务的预热脚本。 为了演示目的,我保持了代码设置简单,仅用于创建文件夹 + 文件。 请记住,永远不要在网站虚拟目录或网站目录中使用此类文件系统读写操作,这会导致每次文件写入操作发生时都回收应用程序池。
应用程序池:演示网站
从 OnDemand 模式启用 StartMode="Always running"
IIS Web 服务器:配置编辑器
转到主应用程序 IIS 根目录。 选择配置编辑器。 通过配置编辑器更改 applicationhost.config 比手动更改更安全。
system.applicationHost/applicationPools
单击集合以继续。 确保在屏幕截图中按如下所示设置突出显示的属性。
选中 AutoStart mode=true
选中 StartMode mode=AlwaysRunning
system.applicationHost/ServiceAutoStartProviders
单击集合以继续。 确保在屏幕截图中按如下所示设置突出显示的属性。
在 ApplicationHost.config ServiceAutoStartProviders 标签中添加程序集和类引用预热脚本包。 我们已使用名称(例如 PreWarmUpMyCache - 请注意 - MY)指示此提供程序。 接下来,我们需要在下一步中将此引用提供给站点标签配置。 请记住 type=Assembly 全名.ClassName,Assembly 全名
system.applicationHost/Sites
单击集合以继续。 确保在屏幕截图中按如下所示设置突出显示的属性。
设置 ServerAutoStart=true
设置 preLoadEnabled=true
设置 serviceAutoStartEnabled=true
设置 serviceAutoStartProvider=PreWarmUpMyCache
应用程序初始化
故障排除 1:确保您的程序集已编译并存在于网站的 bin 文件夹中。
故障排除 2:即使未调用预热脚本,也尝试包含默认网页访问自动初始化。 请参考屏幕截图。
最后一步:现在运行这个
示例代码已附上用于演示目的。 下载它并应用上述设置以测试运行演示。