lx86 发表于 2017-6-30 20:11:00

WIN10 应用程序修改IIS程序池配置及Azure云服务修改程序池配置避免自动回收

  以下内容源自需修改Azure云服务修改程序池的定期回收配置在本地测试及部署到Azure的记录。
  一、Win10下修改指定网站应用程序池的配置
  1、修改IIS程序池的代码如下:
  引用命名空间 using Microsoft.Web.Administration;



            //初始化IIS操作类
using (ServerManager serverManager = new ServerManager())
{
var siteName = "website";//网站名称
var siteApplication = serverManager.Sites.Applications.First();//网站对应的第一个应用程序
var appPoolName = siteApplication.ApplicationPoolName;//应用程序对应的应用程序池名称
var appPool = serverManager.ApplicationPools;//应用程序池
appPool.Recycling.DisallowRotationOnConfigChange = true;//发生配置更改时禁止回收
appPool.Recycling.PeriodicRestart.Time = TimeSpan.FromSeconds(0);//禁止固定时间间隔回收
appPool.Recycling.PeriodicRestart.Schedule.Add(new TimeSpan(4, 0, 0));//增加特定时间凌晨4点回收
serverManager.CommitChanges();//提交变更
Console.WriteLine("修改成功");
}

  ServerManager的API参考MSDN https://msdn.microsoft.com/zh-cn/library/microsoft.web.administration.servermanager_members(v=vs.90).aspx
  对IIS配置的修改具体可参考 https://www.iis.net/configreference/system.applicationhost/applicationpools
  2、权限配置
  我本机会出现“文件名: redirection.config 错误: 由于权限不足而无法读取配置文件”的错误
  需要对文件redirection.config添加用户computername\IIS_IUSRS的操作权限,具体位置为C:\Windows\System32\inetsrv\config。
  二、Azure云服务修改当前WebRole应用程序池的配置
  1、修改Cloud服务ServiceDefinition.csdef文件,使程序有修改IIS配置的权限
  添加<Runtime executionContext="elevated"/>,位置如下:

  2、Web角色启动时先修改IIS配置信息,在Web角色WebRole.cs的OnStart()方法里添加程序代码
  如果添加的是现有网站为Web角色,需要添加WebRole.cs类,格式为:

  OnStart方法里添加IIS操作代码,如下(注释可参考上面):



using (ServerManager serverManager = new ServerManager())
{
var siteName = RoleEnvironment.CurrentRoleInstance.Id + "_Web";
var siteApplication =
serverManager.Sites.Applications.First();
var appPoolName = siteApplication.ApplicationPoolName;
var appPool = serverManager.ApplicationPools;
appPool.Recycling.DisallowRotationOnConfigChange = true;
appPool.Recycling.PeriodicRestart.Time = TimeSpan.FromSeconds(0);
appPool.Recycling.PeriodicRestart.Schedule.Add(new TimeSpan(20, 0, 0));
serverManager.CommitChanges();
}
页: [1]
查看完整版本: WIN10 应用程序修改IIS程序池配置及Azure云服务修改程序池配置避免自动回收