mattytommo 的答案非常好,但我更喜欢以编程方式实现相同的目标,而不是依赖于 cmd 文件。您可以通过 3 个步骤完成:
第 1 步:您必须安装 NuGet 包 Microsoft.Web.Administration。该包包含从应用程序代码控制 IIS 所需的库。
第 2 步:然后您只需从 Web 角色的 RoleEntryPoint 添加对该方法的调用。如果不存在,只需添加一个继承自 RoleEntryPoint 的类。
private void ConfigureAppPools()
{
using (ServerManager serverManager = new ServerManager())
{
foreach (var appPool in serverManager.ApplicationPools)
{
appPool.ProcessModel.IdleTimeout = TimeSpan.Zero;
appPool.Recycling.PeriodicRestart.Time = TimeSpan.Zero;
}
serverManager.CommitChanges();
}
}
此代码只是将机器上的所有应用程序池配置为永不回收或超时。
第 3 步:为此,还需要将这一行添加到 ServiceDefinition.csdef:
<WebRole name="YourWebRoleName" vmsize="ExtraSmall">
...
<Runtime executionContext="elevated" />
...
</WebRole>
这可确保您的 Web RoleEntryPoint 的 OnStart() 方法以提升的权限执行。您的代码的其他部分不会受到影响,因此从安全角度来看这不是问题。
就这些。现在解决了加载慢的问题:)