原文

代码 或者点这

通过IIS 8.0应用初始化特性管理员可以配置IIS为一个网站或多个网站提前执行初始化任务。当应用在初始化期间,可以通过配置先返回一个静态页面知道应用的初始化任务完成。

通过配置一系列的全局级和应用级规则可以控制如何/何时初始化网站应用。

指南

事前准备

首先需要安装IIS 8.0。另外,应用初始化特性是作为IIS的"Application Development"子特性提供的,也需要安装。

下面的截图来自于Windows Server 2012 Server Manager UI,展示了如何安装Application Initialization特性

全局应用初始化

可以在两个地方配置应用初始化特性:全局级别的applicationHost.config文件,和应用级别的web.config文件。

In this walkthrough, you will configure a sample application to always be initialized when the application pool associated with the application starts up. Since application pool behaviors can only be configured in applicationHost.config, running application initialization whenever an application pool starts up is considered part of the "global" application initialization settings.

修改applicationHost.config

用记事本打开%WINDIR%\system32\inetsrv\config文件夹中的applicationHost.config文件。

找到配置块,找到名为".NET v4.5"的应用池记录。

修改这个应用池记录让这个应用池是always running的状态。

<add name=".NET v4.5" startMode="AlwaysRunning" managedRuntimeVersion="v4.0" />

往下找到配置元素。在配置元素中有一个

<application path="/appinit" preloadEnabled="true" applicationPool=".NET v4.5">

设置preloadEnable为true tells IIS 8.0 that it sends a "fake" request to the application when the associated application pool starts up. That is why in the previous step we set the application pool's startMode to "AlwaysRunning".

With the combination of the application pool always running, and the application itself being marked to always receive a fake request, whenever the machine restarts and/or the World Wide Web service is recycled, IIS 8.0 ensures that the application pool instance is running and that the application "/appinit" is always sent a fake request to trigger the application to start up.

修改web.config

用记事本打开位于网站所在目录C:\inetpub\wwwroot\appinit中的web.config。

web.config已经设置好了一些section,但是被注释了,先取消<system.webServer>中的注释。

<applicationInitializationremapManagedRequestsTo="Startup.htm" skipManagedModules="true" ><add initializationPage="/default.aspx" />
</applicationInitialization>

这个配置告诉IIS在初始化完成前,返回Startup.html页面给所有请求者。

运行应用

net stop w3svc & net start w3svc

用浏览器打开http://localhost/appinit/default.aspx

浏览器先是显示“Startup.htm”这个页面,一旦应用初始化完成,便会返回真正的请求页面。

配置overlapped进程回收

IIS 8.0通过在一个后台overlapped进程中执行应用初始化集成了应用初始化和overplapped进程回收。当IIS检查到一个活动的工作进程在被回收的时候,不会马上转到新的工作进程中,而是等新的进程完成了初始化工作后才转到这个新的进程。这样保证了当应用已经在运行的时候不会再次看到“Startup.html”页面。

打开applicationHost.config文件。修改如下:

<add name=".NET v4.5"startMode="AlwaysRunning"managedRuntimeVersion="v4.0" ><recycling logEventOnRecycle="Schedule"><periodicRestart requests="30" /></recycling>
</add>

元素告诉IIS每30个HTTP请求回收进程。

运行应用

net stop w3svc & net start w3svc

用浏览器打开http://localhost/appinit/default.aspx

“Startup.htm”展现出来了

打开任务管理器。按照进程名排序,可以看到有一个w3wp.exe线程,状态为Running。这个就是在运行"appinit"应用的进程。

不断刷新浏览器直到出现了真正的default.aspx页面。

现在再次刷新页面30次以上,导致IIS回收应用池。现在停止刷新,回到任务管理器,可以看到出现了第二个w3wp.exe进程:

上面的截图告诉我们当进程开始回收的时候第二个w3wp.exe开始了。

再次刷新浏览器,我们看到的依然是default.aspx页面。即使应用初始化正在这个新的w3wp.exe实例中进行。

URL Rewrite与应用初始化

转载于:https://www.cnblogs.com/irocker/p/iis-80-application-initialization.html

[译]IIS 8.0应用初始化相关推荐

  1. IIS 5.0 和 6.0 的 ASP.NET 应用程序生命周期

    本文内容 应用程序生命周期概述 生命周期事件和 Global.asax 文件 编译生命周期 HTTP 模块 本文概述 VS 2008 ASP.NET 应用程序的生命周期,列出了重要的生命周期事件,并描 ...

  2. IIS 7.0 的 ASP.NET 应用程序生命周期概述

    本主题介绍在 IIS 7.0 集成模式下运行以及与 .NET Framework 3.0 或更高版本一起运行的 ASP.NET 应用程序的应用程序生命周期.IIS 7.0 还支持经典模式,其行为类似于 ...

  3. 服务器的管理IIS 6.0

    IIS 6.0 和 Windows Server 2003在网络应用服务器的管理.可用性.可靠性.安全性.性能与可扩展性方面提供了许多新的功能.IIS 6.0同样增强了网络应用的开发与国际性支持.II ...

  4. IIS 10 网站应用程序初始化和预加载

    一.前言 通过安装 IIS 10 应用程序初始化功能,并启用网站预加载设置,达到提高网站响应速度目的.当我们第一次把 ASP.NET 网站程序部署在 IIS 时,在浏览器中第一次访问网站,会发现很慢, ...

  5. 微软 Internet 信息服务器(IIS) 5.0 和 6.0 状态代码说明

    当网上冲浪的用户尝试通过 HTTP 或文件传输协议 (FTP) 访问运行 Internet Information Services (IIS) 的服务器上的内容时,IIS 将返回一个数字代码,指示该 ...

  6. IIS 6.0安全增强

     IIS 6.0安全性概览: 全新设计: 结构的变化 增强的日志功能 快速失败保护 应用程序隔离 最小权限原则...  该组件默认不安装  不再安装应用范例  默认只安装静态HTTP服务器  默认情况 ...

  7. 第二讲 Best Practices For Running IIS 6.0 And ASP.NET

    *Web Garden 一个Application pool指定多个Worker processes 某个worker processes负载过重.lock,其它的worker processes可继 ...

  8. IIS 7.0的ASP.NET应用程序生命周期概述

    小结于:http://msdn.microsoft.com/zh-cn/library/bb470252(v=vs.100).aspx IIS 7.0的ASP.NET应用程序生命周期概述 (一)结构概 ...

  9. IIS 6.0的web园 最大工作进程数

    这篇文章主要介绍了IIS 6.0的web园 最大工作进程数,需要的朋友可以参考下 IIS 6.0允许将应用程序池配置成一个Web园(Web Garden).要理解Web园的概念,可以设想这样一种情形: ...

  10. http压缩方法(IIS 6.0 与IIS 7.0的详解)

    在网上看了有关这方面的博客,再加上自己的实践,整理了一下,希望对大家有所帮助 本片文章采用两种压缩方法:一种是在IIS上开启GZIP压缩,另一种方法是用CompressionModule压缩模块.下面 ...

最新文章

  1. 以太网与802.3,wifi与802.11的关系
  2. mysql搭建主主_mysql主主配置
  3. [转]开源项目学习方法ABC
  4. SharePoint 2013 术语和术语集介绍
  5. [CODEVS 1301] 任务分配
  6. asp.net core合并压缩资源文件引发的学习之旅
  7. 车厢调度(信息学奥赛一本通-T1357)
  8. 计算机网络的定义分类性能指标,3_计算机网络分类与主要性能指标.ppt
  9. 阿里开源深度学习框架XDL,面向高维稀疏数据,支持千亿参数训练规模
  10. Ubuntu系统下安装rust
  11. 总结《An Introduction to Ray Tracing》
  12. android 4.3以上修改DNS流程(netd)
  13. 虎牙面试官:String长度有限制吗?是多少?我:这太...
  14. 三维模型_浅谈倾斜摄影及三维模型的应用行业
  15. 明华澳汉 sle_4442 卡 读写
  16. 使用excel分类汇总数据生成饼图
  17. [渝粤教育] 长安大学 互换性与技术测量 参考 资料
  18. docker制作tomcat镜像并部署war包
  19. 巴比特 | 元宇宙每日必读:大厂的高薪、期权都不香了,互联网精英纷纷涌向的Web3,魅力到底有多大?...
  20. 故障模块名称: mso.dll

热门文章

  1. SQL Server内部的内存管理
  2. 关于 it行业未来 的个人判断
  3. ASP.NET版本不是1.1, 2.0的也一样
  4. Asp.net Web控件自定义类属性(经验篇)
  5. Python 如何从字符串中提取 URL 链接
  6. 【往届已EI稳定检索】第二届计算机科学与管理科技国际学术会议,多主题征稿!...
  7. 生成式预训练之MASS
  8. 【福利】本人自学深度学习的300G的学习资料愿与大家分享!一起进步!
  9. 资料 |《深度学习500问》,川大优秀毕业生的诚意之作
  10. Linux基础—2.Linux中的文件基本命令以及四大远程连接工具XShell、FileZilla、Notepad++、Xmanager4的使用