如何在IIS 7.5上预热ASP.NETMVC应用程序?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (29)

我们想要预热托管在IIS 7.5服务器上的ASP.NET MVC应用程序。以前在http://forums.iis.net/t/1176740.aspx上可用的热身模块自某时以来已被删除。

每当IIS或ASP.NET工作进程出于任何原因重新启动时,都应该预热该应用程序。在预热期间,IIS应返回一些HTTP状态代码,表示其预热状态或无法为任何客户端提供服务。

将创建一个可执行文件通过HttpRequests浏览网站中的必要页面是一个好主意吗?可执行文件可以从IProcessHostPreloadClient实现中触发。是否有可能配置IIS,以便它只接受来自本地主机的请求,一旦可执行文件完成,它可以切换到所有客户端 - 但该切换不应触发IIS重启(显然)。

是否可以使用Visual Studio 2010 - Web性能测试来预热应用程序而不是创建手动可执行文件?任何其他的选择?

应用程序使用表单身份验证并使用会话 - 因此维护状态Cookie和其他Cookie非常重要。

我们在我们的应用程序中使用.NET Framework 4.0和Entity Framework(数据库优先)。第一次命中EF查询很慢。热身背后的原因是让这些第一次击中。我们已经在大多数地方使用编译查询,并且已经为EF实现了预编译的视图。模型和应用程序的大小非常大且复杂。热身需要遍历许多页面,以确保在任何最终用户访问应用程序之前至少执行一次编译和非编译的EF查询。

提问于
用户回答回答于

微软已经发布了一个完全按照你的要求提供的模块。IIS 7.5应用程序初始化模块通过在第一个请求到达之前加载Web应用程序来提高Web站点的响应能力。

可以指定一系列Url,IIS将在接受来自真实用户的请求之前预加载。我不认为你可以得到一个真正的用户登录expereince,但也许你可以设置模拟网页,不需要登录,满足你所要求的同样的热身?

我认为最引人注目的特点是,该模块还可以实现重叠的流程回收。在从IIS 8.0以下教程包括如何使重叠进程回收步骤一步的做法。

当IIS检测到正在回收活动工作进程时,IIS不会将活动流量切换到新的回收工作进程,直到新工作进程在新进程中完成运行所有应用程序初始化URL为止。这可确保浏览网站的客户在应用程序正常运行后不会看到应用程序初始化页面。

此IIS应用程序初始化模块内置于IIS 8.0中,但可供IIS 7.5下载

用户回答回答于

扫码关注云+社区