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[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添加用户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[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();
            }

 

posted on 2017-01-22 16:05  村_长  阅读(1914)  评论(0编辑  收藏  举报

导航