c# 创建并设置应用程序池
原创 xinmulee 最后发布于 2018-03-05 10:45:38 阅读数 1370 收藏
展开
- /// <summary>
- /// 创建应用程序池 IIS 7 默认是 FrameWork 4.0 集成模式
- /// </summary>
- /// <param name="appPoolName"></param>
- /// <param name="maxProcesses"> 最大进程数 </param>
- /// <param name="queueLength"> 队列长度 </param>
- /// <param name="type">0 为集成模式 1 为经理模式 </param>
- public static bool CreateAppPool7(string appPoolName, long maxProcesses,long queueLength,string type)
- {
- try
- {
- ServerManager sm = new ServerManager();
- // 判断是否存在应用程序池
- ApplicationPool appPool = sm.ApplicationPools[appPoolName];
- if (appPool == null)
- {
- sm.ApplicationPools.Add(appPoolName);
- ApplicationPool apppool = sm.ApplicationPools[appPoolName];
- if ("0".Equals(type))
- {
- apppool.ManagedPipelineMode = ManagedPipelineMode.Integrated;// 托管管道为集成模式 ManagedPipelineMode.Classic 为经典模式
- }
- else {
- apppool.ManagedPipelineMode = ManagedPipelineMode.Classic;// 托管管道为经典模式 ManagedPipelineMode.Classic 为经典模式
- }
- apppool.ManagedRuntimeVersion = "v4.0"; // 当设置错误时, 会在应用程序中创建一个不存在的版本, 不会报错
- // 应当检测当前电脑是否安装 FrameWork 4.0 , 并处理没有安装时该怎么办
- //apppool.QueueLength
- apppool.Recycling.DisallowOverlappingRotation = false;
- apppool.Recycling.PeriodicRestart.Time = TimeSpan.FromMinutes(0);
- apppool.Recycling.PeriodicRestart.Schedule.Add(TimeSpan.Parse("23:00:00"));
- apppool.Recycling.PeriodicRestart.Schedule.Add(TimeSpan.Parse("06:00:00"));
- apppool.Recycling.PeriodicRestart.Schedule.Add(TimeSpan.Parse("12:30:00"));
- apppool.Recycling.PeriodicRestart.Schedule.Add(TimeSpan.Parse("18:00:00"));
- apppool.Recycling.LogEventOnRecycle = RecyclingLogEventOnRecycle.Memory
- | RecyclingLogEventOnRecycle.Requests
- | RecyclingLogEventOnRecycle.ConfigChange
- | RecyclingLogEventOnRecycle.IsapiUnhealthy
- | RecyclingLogEventOnRecycle.OnDemand
- | RecyclingLogEventOnRecycle.PrivateMemory
- | RecyclingLogEventOnRecycle.Schedule
- | RecyclingLogEventOnRecycle.Time;
- apppool.Recycling.PeriodicRestart.Memory = 40960000;
- apppool.Recycling.PeriodicRestart.PrivateMemory= 0;
- apppool.ProcessModel.IdleTimeout = TimeSpan.FromMinutes(0);
- apppool.ProcessModel.MaxProcesses= maxProcesses;
- apppool.ProcessModel.ShutdownTimeLimit = TimeSpan.FromSeconds(120);// 关闭时间限制设置为 120 秒
- apppool.QueueLength = queueLength;
- apppool.CPU.Limit = 80000;
- apppool.CPU.Action=ProcessorAction.KillW3wp;
- apppool.Failure.RapidFailProtection = false;
- apppool.AutoStart = true;
- sm.CommitChanges();
- apppool.Recycle();
- }
- else
- {
- //appPool.ManagedPipelineMode = ManagedPipelineMode.Integrated;// 托管管道为集成模式 ManagedPipelineMode.Classic 为经典模式
- if ("0".Equals(type))
- {
- appPool.ManagedPipelineMode = ManagedPipelineMode.Integrated;// 托管管道为集成模式 ManagedPipelineMode.Classic 为经典模式
- }
- else
- {
- appPool.ManagedPipelineMode = ManagedPipelineMode.Classic;// 托管管道为经典模式 ManagedPipelineMode.Classic 为经典模式
- }
- appPool.ManagedRuntimeVersion = "v4.0"; // 当设置错误时, 会在应用程序中创建一个不存在的版本, 不会报错
- // 应当检测当前电脑是否安装 FrameWork 4.0 , 并处理没有安装时该怎么办
- appPool.Recycling.DisallowOverlappingRotation = false;
- appPool.Recycling.PeriodicRestart.Time = TimeSpan.FromMinutes(0);
- appPool.Recycling.PeriodicRestart.Schedule.Clear();
- appPool.Recycling.PeriodicRestart.Schedule.Add(TimeSpan.Parse("23:00:00"));
- appPool.Recycling.PeriodicRestart.Schedule.Add(TimeSpan.Parse("06:00:00"));
- appPool.Recycling.PeriodicRestart.Schedule.Add(TimeSpan.Parse("12:30:00"));
- appPool.Recycling.PeriodicRestart.Schedule.Add(TimeSpan.Parse("18:00:00"));
- appPool.Recycling.LogEventOnRecycle = RecyclingLogEventOnRecycle.Memory
- | RecyclingLogEventOnRecycle.Requests
- | RecyclingLogEventOnRecycle.ConfigChange
- | RecyclingLogEventOnRecycle.IsapiUnhealthy
- | RecyclingLogEventOnRecycle.OnDemand
- | RecyclingLogEventOnRecycle.PrivateMemory
- | RecyclingLogEventOnRecycle.Schedule
- | RecyclingLogEventOnRecycle.Time;
- appPool.Recycling.PeriodicRestart.Memory = 40960000;
- appPool.Recycling.PeriodicRestart.PrivateMemory = 0;
- appPool.ProcessModel.IdleTimeout = TimeSpan.FromMinutes(0);
- appPool.ProcessModel.MaxProcesses = maxProcesses;
- appPool.ProcessModel.ShutdownTimeLimit = TimeSpan.FromSeconds(120);// 关闭时间限制设置为 120 秒
- appPool.QueueLength = queueLength;
- appPool.CPU.Limit = 80000;
- appPool.CPU.Action = ProcessorAction.KillW3wp;
- appPool.Failure.RapidFailProtection = false;
- appPool.AutoStart = true;
- sm.CommitChanges();
- appPool.Recycle();
- }
- }
- catch
- {
- return false;
- }
- return true;
- }
- ----------------
来源: http://www.bubuko.com/infodetail-3447903.html