以下内容源自需修改Azure云服务修改程序池的定期回收配置在本地测试及部署到Azure的记录。
一、Win10下修改指定网站应用程序池的配置
1、修改IIS程序池的代码如下:
引用命名空间 using Microsoft.Web.Administration;
//初始化IIS操作类 using (ServerManager serverManager = new ServerManager()) { var siteName = "website";//网站名称 var siteApplication = serverManager.Sites[siteName].Applications.First();//网站对应的第一个应用程序 var appPoolName = siteApplication.ApplicationPoolName;//应用程序对应的应用程序池名称 var appPool = serverManager.ApplicationPools[appPoolName];//应用程序池 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添加用户computernameIIS_IUSRS的操作权限,具体位置为C:WindowsSystem32inetsrvconfig。
二、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[siteName].Applications.First(); var appPoolName = siteApplication.ApplicationPoolName; var appPool = serverManager.ApplicationPools[appPoolName]; appPool.Recycling.DisallowRotationOnConfigChange = true; appPool.Recycling.PeriodicRestart.Time = TimeSpan.FromSeconds(0); appPool.Recycling.PeriodicRestart.Schedule.Add(new TimeSpan(20, 0, 0)); serverManager.CommitChanges(); }