65.9K
CodeProject 正在变化。 阅读更多。
Home

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

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.94/5 (9投票s)

2014 年 7 月 10 日

CPOL

3分钟阅读

viewsIcon

92413

downloadIcon

622

设置 IIS Asp.net 预热模块的步骤。 描述 Preload 的用法 - System.Web.Hosting.IProcessHostPreloadClient

  1. 引言
  2. 必备组件
  3. 创建您的预热脚本程序集
  4. 应用程序池:演示网站
  5. IIS Web 服务器:配置编辑器
  6. system.applicationHost/applicationPools
  7. system.applicationHost/ServiceAutoStartProviders
  8. system.applicationHost/Sites
  9. 应用程序初始化
  10. 最后一步:现在运行这个
  11. 参考

引言

我一直在研究 IIS asp.net 预热功能一段时间了,并且尝试了所有可能的方法来让我的预热脚本工作,但它未能初始化和自动启动。 在花了一些时间了解请求流程和内部机制后,我们能够找到解决方案。 本文在某种程度上将帮助您找到解决我们在 IIS 中启用预热脚本时可能遇到的大多数常见问题的方法。 我开始查看关于 IIS7.5 和自动启动应用程序池的一些文章,但几乎找不到在线资源可以为我提供清晰明了的步骤来启用此功能。 本文的总体目的是提供端到端的步骤以及可能会遇到的一些已知问题。 存在一个示例演示代码,您可以下载该代码来为您的网站设置预热功能。 我还没有深入解释为什么我们需要 IIS asp.net 预热,但我涵盖了将用于运行预热脚本的最可能的配置设置。

必备组件

应用程序初始化功能需要安装 IIS 8.0。 此外,需要安装 IIS "应用程序开发" 子功能中的应用程序初始化功能。 以下屏幕截图来自 Windows Server 2012 服务器管理器 UI,显示了应用程序初始化功能。 IIS 8.0 应用程序初始化设置 关键注意:重新启动服务器以使上述更改生效。 当我们必须在用户访问任何网页之前自动执行任何启动页面时,此初始化起着重要作用。 有时预热启动失败,因为需要在 [code] 下启用某些设置applicationInitialization[/code]

AddRoleFeature

ApplicationInitialization

创建您的预热脚本程序集

Warmup Sln

此预热脚本将在 IIS 应用程序池回收启动时或网站初始化时执行。 我们可以将各种场景嵌入到此启动脚本中。 我们可以使用缓存网页或准备好现成的报告或任何需要更长时间加载的繁重任务的预热脚本。 为了演示目的,我保持了代码设置简单,仅用于创建文件夹 + 文件。 请记住,永远不要在网站虚拟目录或网站目录中使用此类文件系统读写操作,这会导致每次文件写入操作发生时都回收应用程序池。

PreWarmupCache

应用程序池:演示网站

从 OnDemand 模式启用 StartMode="Always running"

PreWarmupCache

IIS Web 服务器:配置编辑器

转到主应用程序 IIS 根目录。 选择配置编辑器。 通过配置编辑器更改 applicationhost.config 比手动更改更安全。

ApplicationHostConfig

system.applicationHost/applicationPools

单击集合以继续。 确保在屏幕截图中按如下所示设置突出显示的属性。

system.applicationhost

选中 AutoStart mode=true

ApplicationPool-AutoStart

选中 StartMode mode=AlwaysRunning

ApplicationPool AlwaysRunning

system.applicationHost/ServiceAutoStartProviders

单击集合以继续。 确保在屏幕截图中按如下所示设置突出显示的属性。

ApplicationHost ServiceAutoStart Providers

在 ApplicationHost.config ServiceAutoStartProviders 标签中添加程序集和类引用预热脚本包。 我们已使用名称(例如 PreWarmUpMyCache - 请注意 - MY)指示此提供程序。 接下来,我们需要在下一步中将此引用提供给站点标签配置。 请记住 type=Assembly 全名.ClassName,Assembly 全名

ApplicationHost ServiceAutoStart Providers

system.applicationHost/Sites

单击集合以继续。 确保在屏幕截图中按如下所示设置突出显示的属性。

设置 ServerAutoStart=true

ApplicationHost ServiceAutoStart Providers

设置 preLoadEnabled=true

设置 serviceAutoStartEnabled=true

设置 serviceAutoStartProvider=PreWarmUpMyCache

ApplicationHost ServiceAutoStart Providers

ApplicationHostServiceAutoStartProvider2

应用程序初始化

故障排除 1:确保您的程序集已编译并存在于网站的 bin 文件夹中。

故障排除 2:即使未调用预热脚本,也尝试包含默认网页访问自动初始化。 请参考屏幕截图。

 ApplicationIntializationMythe

最后一步:现在运行这个

示例代码已附上用于演示目的。 下载它并应用上述设置以测试运行演示。

参考文献

IIS 自动启动预热,作者:Scott Guthrie

IIS 技术网

© . All rights reserved.