栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > .Net

iis命令(网站自动开启关闭)

.Net 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

iis命令(网站自动开启关闭)

在cmd命令工具下,使用管理员权限可用

控制某一个网站
  • 查看命令:C:WindowsSystem32inetsrvappcmd.exe /?
  • 开启某网站:C:WindowsSystem32inetsrvappcmd.exe start site “XXXX”
  • 关闭某网站:C:WindowsSystem32inetsrvappcmd.exe stop site “XXXX”
  • 停止“应用程序池”:C:WindowsSystem32inetsrvappcmd.exe stop apppool /apppool.name:xxxx
  • 启动“应用程序池”:C:WindowsSystem32inetsrvappcmd.exe start apppool /apppool.name:xxxx
iis命令
  • 启动IIS:iisreset /START
  • 停止IIS:iisreset /STOP
  • 重启IIS:iisreset /RESTART
  • 重启电脑:iisreset /REBOOT
  • 如果停止IIS失败重启电脑:iisreset /rebootonerror
  • 不用强迫IIS停止:iisreset /NOFORCE
  • 在X秒后,IIS被强制停止,除非 /NOFORCE 参数给出.:iisreset /TIMEOUT:X
  • 显示所有Internet服务状态:iisreset /status
  • 本地系统上启用(禁用)Internet服务的重新启动:iisreset /enable或disable
  • 若无法停止Internet服务,将不会强制终止Internet服务:iisreset /noforce

如果想自动运行某条命令可以将命令写入bat,然后使用计划服务或者定时任务等运行即可

使用dll

Microsoft中提供了管理IIS7及以上版本一个非常强大的API - Microsoft.Web.Administration.dll,利用该API可以让我们很方便的以编程的方式管理和设定IIS的各项配置信息了。
Microsoft.Web.Administration.dll位于IIS目录下(%WinDir%System32InetSrv)下,在项目中添加引用后就可以使用这些API了。

参考资料:
https://msdn.microsoft.com/en-us/library/microsoft.web.administration(v=vs.90).aspx

https://docs.microsoft.com/en-us/dotnet/api/microsoft.web.administration?redirectedfrom=MSDN&view=iis-dotnet

下面通过代码进行web发布:

1、添加 Microsoft.Web.Administration.dll 引用
2、引用命名空间 using Microsoft.Web.Administration;

/// 
   /// 使用代码进行web发布
   /// 
   /// web应用程序名称
   /// web应用程序端口
   /// 
   private bool PublishWeb(string webName, int port)
   {
       try
       {
           ServerManager iismanager = new ServerManager();
           //判断应用程序池是否存在
           if (iismanager.ApplicationPools[webName] != null)
           {
               iismanager.ApplicationPools.Remove(iismanager.ApplicationPools[webName]);
           }
           //判断web应用程序是否存在
           if (iismanager.Sites[webName] != null)
           {
               iismanager.Sites.Remove(iismanager.Sites[webName]);
           }
           //建立web应用程序(第二个参数为安装文件的地址)
           iismanager.Sites.Add(webName, "c:\webFilePath", port);
           //添加web应用程序池
           ApplicationPool pool = iismanager.ApplicationPools.Add(webName);
           //设置web应用程序池的Framework版本(注意版本号大小写问题)
           pool.ManagedRuntimeVersion = "v4.0";
           //设置是否启用32为应用程序
           pool.SetAttributeValue("enable32BitAppOnWin64", true);
           //设置web网站的应用程序池
           iismanager.Sites[webName].Applications[0].ApplicationPoolName = webName;
           //提交更改
           iismanager.CommitChanges();
           return true;
       }
       catch (Exception ex)
       {
           throw (ex);
       }
   }
            Microsoft.Web.Administration.ServerManager sm = new Microsoft.Web.Administration.ServerManager();

            System.Console.WriteLine("应用程序池默认设置:");
            System.Console.WriteLine("t常规:");
            System.Console.WriteLine("tt.NET Framework 版本:{0}", sm.ApplicationPoolDefaults.ManagedRuntimeVersion);
            System.Console.WriteLine("tt队列长度:{0}", sm.ApplicationPoolDefaults.QueueLength);
            System.Console.WriteLine("tt托管管道模式:{0}", sm.ApplicationPoolDefaults.ManagedPipelineMode.ToString());
            System.Console.WriteLine("tt自动启动:{0}", sm.ApplicationPoolDefaults.AutoStart);

            System.Console.WriteLine("tCPU:");
            System.Console.WriteLine("tt处理器关联掩码:{0}", sm.ApplicationPoolDefaults.Cpu.SmpProcessorAffinityMask);
            System.Console.WriteLine("tt限制:{0}", sm.ApplicationPoolDefaults.Cpu.Limit);
            System.Console.WriteLine("tt限制操作:{0}", sm.ApplicationPoolDefaults.Cpu.Action.ToString());
            System.Console.WriteLine("tt限制间隔(分钟):{0}", sm.ApplicationPoolDefaults.Cpu.ResetInterval.TotalMinutes);
            System.Console.WriteLine("tt已启用处理器关联:{0}", sm.ApplicationPoolDefaults.Cpu.SmpAffinitized);

            System.Console.WriteLine("t回收:");
            System.Console.WriteLine("tt发生配置更改时禁止回收:{0}", sm.ApplicationPoolDefaults.Recycling.DisallowRotationOnConfigChange);
            System.Console.WriteLine("tt固定时间间隔(分钟):{0}", sm.ApplicationPoolDefaults.Recycling.PeriodicRestart.Time.TotalMinutes);
            System.Console.WriteLine("tt禁用重叠回收:{0}", sm.ApplicationPoolDefaults.Recycling.DisallowOverlappingRotation);
            System.Console.WriteLine("tt请求限制:{0}", sm.ApplicationPoolDefaults.Recycling.PeriodicRestart.Requests);
            System.Console.WriteLine("tt虚拟内存限制(KB):{0}", sm.ApplicationPoolDefaults.Recycling.PeriodicRestart.Memory);
            System.Console.WriteLine("tt专用内存限制(KB):{0}", sm.ApplicationPoolDefaults.Recycling.PeriodicRestart.PrivateMemory);
            System.Console.WriteLine("tt特定时间:{0}", sm.ApplicationPoolDefaults.Recycling.PeriodicRestart.Schedule.ToString());
            System.Console.WriteLine("tt生成回收事件日志条目:{0}", sm.ApplicationPoolDefaults.Recycling.LogEventOnRecycle.ToString());

            System.Console.WriteLine("t进程孤立:");
            System.Console.WriteLine("tt可执行文件:{0}", sm.ApplicationPoolDefaults.Failure.OrphanActionExe);
            System.Console.WriteLine("tt可执行文件参数:{0}", sm.ApplicationPoolDefaults.Failure.OrphanActionParams);
            System.Console.WriteLine("tt已启用:{0}", sm.ApplicationPoolDefaults.Failure.OrphanWorkerProcess);

            System.Console.WriteLine("t进程模型:");
            System.Console.WriteLine("ttPing 间隔(秒):{0}", sm.ApplicationPoolDefaults.ProcessModel.PingInterval.TotalSeconds);
            System.Console.WriteLine("ttPing 最大响应时间(秒):{0}", sm.ApplicationPoolDefaults.ProcessModel.PingResponseTime.TotalSeconds);
            System.Console.WriteLine("tt标识:{0}", sm.ApplicationPoolDefaults.ProcessModel.IdentityType);
            System.Console.WriteLine("tt用户名:{0}", sm.ApplicationPoolDefaults.ProcessModel.UserName);
            System.Console.WriteLine("tt密码:{0}", sm.ApplicationPoolDefaults.ProcessModel.Password);
            System.Console.WriteLine("tt关闭时间限制(秒):{0}", sm.ApplicationPoolDefaults.ProcessModel.ShutdownTimeLimit.TotalSeconds);
            System.Console.WriteLine("tt加载用户配置文件:{0}", sm.ApplicationPoolDefaults.ProcessModel.LoadUserProfile);
            System.Console.WriteLine("tt启动时间限制(秒):{0}", sm.ApplicationPoolDefaults.ProcessModel.StartupTimeLimit.TotalSeconds);
            System.Console.WriteLine("tt允许 Ping:{0}", sm.ApplicationPoolDefaults.ProcessModel.PingingEnabled);
            System.Console.WriteLine("tt闲置超时(分钟):{0}", sm.ApplicationPoolDefaults.ProcessModel.IdleTimeout.TotalMinutes);
            System.Console.WriteLine("tt最大工作进程数:{0}", sm.ApplicationPoolDefaults.ProcessModel.MaxProcesses);

            System.Console.WriteLine("t快速故障防护:");
            System.Console.WriteLine("tt“服务不可用”响应类型:{0}", sm.ApplicationPoolDefaults.Failure.LoadBalancerCapabilities.ToString());
            System.Console.WriteLine("tt故障间隔(分钟):{0}", sm.ApplicationPoolDefaults.Failure.RapidFailProtectionInterval.TotalMinutes);
            System.Console.WriteLine("tt关闭可执行文件:{0}", sm.ApplicationPoolDefaults.Failure.AutoShutdownExe);
            System.Console.WriteLine("tt关闭可执行文件参数:{0}", sm.ApplicationPoolDefaults.Failure.AutoShutdownParams);
            System.Console.WriteLine("tt已启用:{0}", sm.ApplicationPoolDefaults.Failure.RapidFailProtection);
            System.Console.WriteLine("tt最大故障数:{0}", sm.ApplicationPoolDefaults.Failure.RapidFailProtectionMaxCrashes);
            System.Console.WriteLine("tt允许32位应用程序运行在64位 Windows 上:{0}", sm.ApplicationPoolDefaults.Enable32BitAppOnWin64);

            System.Console.WriteLine();
            System.Console.WriteLine("网站默认设置:");
            System.Console.WriteLine("t常规:");
            System.Console.WriteLine("tt物理路径凭据:UserName={0}, Password={1}", sm.VirtualDirectoryDefaults.UserName, sm.VirtualDirectoryDefaults.Password);
            System.Console.WriteLine("tt物理路径凭据登录类型:{0}", sm.VirtualDirectoryDefaults.LogonMethod.ToString());
            System.Console.WriteLine("tt应用程序池:{0}", sm.ApplicationDefaults.ApplicationPoolName);
            System.Console.WriteLine("tt自动启动:{0}", sm.SiteDefaults.ServerAutoStart);
            System.Console.WriteLine("t行为:");
            System.Console.WriteLine("tt连接限制:");
            System.Console.WriteLine("ttt连接超时(秒):{0}", sm.SiteDefaults.Limits.ConnectionTimeout.TotalSeconds);
            System.Console.WriteLine("ttt最大并发连接数:{0}", sm.SiteDefaults.Limits.MaxConnections);
            System.Console.WriteLine("ttt最大带宽(字节/秒):{0}", sm.SiteDefaults.Limits.MaxBandwidth);
            System.Console.WriteLine("tt失败请求跟踪:");
            System.Console.WriteLine("ttt跟踪文件的最大数量:{0}", sm.SiteDefaults.TraceFailedRequestsLogging.MaxLogFiles);
            System.Console.WriteLine("ttt目录:{0}", sm.SiteDefaults.TraceFailedRequestsLogging.Directory);
            System.Console.WriteLine("ttt已启用:{0}", sm.SiteDefaults.TraceFailedRequestsLogging.Enabled);
            System.Console.WriteLine("tt已启用的协议:{0}", sm.ApplicationDefaults.EnabledProtocols);

            foreach (var s in sm.Sites)//遍历网站
            {
                System.Console.WriteLine();
                System.Console.WriteLine("模式名:{0}", s.Schema.Name);
                System.Console.WriteLine("编号:{0}", s.Id);
                System.Console.WriteLine("网站名称:{0}", s.Name);
                System.Console.WriteLine("物理路径:{0}", s.Applications["/"].VirtualDirectories["/"].PhysicalPath);
                System.Console.WriteLine("物理路径凭据:{0}", s.Methods.ToString());
                System.Console.WriteLine("应用程序池:{0}", s.Applications["/"].ApplicationPoolName);
                System.Console.WriteLine("已启用的协议:{0}", s.Applications["/"].EnabledProtocols);
                System.Console.WriteLine("自动启动:{0}", s.ServerAutoStart);
                System.Console.WriteLine("运行状态:{0}", s.State.ToString());

                System.Console.WriteLine("网站绑定:");
                foreach (var tmp in s.Bindings)
                {
                    System.Console.WriteLine("t类型:{0}", tmp.Protocol);
                    System.Console.WriteLine("tIP 地址:{0}", tmp.EndPoint.Address.ToString());
                    System.Console.WriteLine("t端口:{0}", tmp.EndPoint.Port.ToString());
                    System.Console.WriteLine("t主机名:{0}", tmp.Host);
                    //System.Console.WriteLine(tmp.BindingInformation);
                    //System.Console.WriteLine(tmp.CertificateStoreName);
                    //System.Console.WriteLine(tmp.IsIPPortHostBinding);
                    //System.Console.WriteLine(tmp.IsLocallyStored);
                    //System.Console.WriteLine(tmp.UseDsMapper);
                }

                System.Console.WriteLine("连接限制:");
                System.Console.WriteLine("t连接超时(秒):{0}", s.Limits.ConnectionTimeout.TotalSeconds);
                System.Console.WriteLine("t最大并发连接数:{0}", s.Limits.MaxConnections);
                System.Console.WriteLine("t最大带宽(字节/秒):{0}", s.Limits.MaxBandwidth);

                System.Console.WriteLine("失败请求跟踪:");
                System.Console.WriteLine("t跟踪文件的最大数量:{0}", s.TraceFailedRequestsLogging.MaxLogFiles);
                System.Console.WriteLine("t目录:{0}", s.TraceFailedRequestsLogging.Directory);
                System.Console.WriteLine("t已启用:{0}", s.TraceFailedRequestsLogging.Enabled);

                System.Console.WriteLine("日志:");
                //System.Console.WriteLine("t启用日志服务:{0}", s.LogFile.Enabled);
                System.Console.WriteLine("t格式:{0}", s.LogFile.LogFormat.ToString());
                System.Console.WriteLine("t目录:{0}", s.LogFile.Directory);
                System.Console.WriteLine("t文件包含字段:{0}", s.LogFile.LogExtFileFlags.ToString());
                System.Console.WriteLine("t计划:{0}", s.LogFile.Period.ToString());
                System.Console.WriteLine("t最大文件大小(字节):{0}", s.LogFile.TruncateSize);
                System.Console.WriteLine("t使用本地时间进行文件命名和滚动更新:{0}", s.LogFile.LocalTimeRollover);

                System.Console.WriteLine("----应用程序的默认应用程序池:{0}", s.ApplicationDefaults.ApplicationPoolName);
                System.Console.WriteLine("----应用程序的默认已启用的协议:{0}", s.ApplicationDefaults.EnabledProtocols);
                //System.Console.WriteLine("----应用程序的默认物理路径凭据:{0}", s.ApplicationDefaults.Methods.ToString());
                //System.Console.WriteLine("----虚拟目录的默认物理路径凭据:{0}", s.VirtualDirectoryDefaults.Methods.ToString());
                System.Console.WriteLine("----虚拟目录的默认物理路径凭据登录类型:{0}", s.VirtualDirectoryDefaults.LogonMethod.ToString());
                System.Console.WriteLine("----虚拟目录的默认用户名:{0}", s.VirtualDirectoryDefaults.UserName);
                System.Console.WriteLine("----虚拟目录的默认用户密码:{0}", s.VirtualDirectoryDefaults.Password);
                System.Console.WriteLine("应用程序 列表:");
                foreach (var tmp in s.Applications)
                {
                    if (tmp.Path != "/")
                    {
                        System.Console.WriteLine("t模式名:{0}", tmp.Schema.Name);
                        System.Console.WriteLine("t虚拟路径:{0}", tmp.Path);
                        System.Console.WriteLine("t物理路径:{0}", tmp.VirtualDirectories["/"].PhysicalPath);
                        //System.Console.WriteLine("t物理路径凭据:{0}", tmp.Methods.ToString());
                        System.Console.WriteLine("t应用程序池:{0}", tmp.ApplicationPoolName);
                        System.Console.WriteLine("t已启用的协议:{0}", tmp.EnabledProtocols);
                    }
                    System.Console.WriteLine("t虚拟目录 列表:");
                    foreach (var tmp2 in tmp.VirtualDirectories)
                    {
                        if (tmp2.Path != "/")
                        {
                            System.Console.WriteLine("tt模式名:{0}", tmp2.Schema.Name);
                            System.Console.WriteLine("tt虚拟路径:{0}", tmp2.Path);
                            System.Console.WriteLine("tt物理路径:{0}", tmp2.PhysicalPath);
                            //System.Console.WriteLine("tt物理路径凭据:{0}", tmp2.Methods.ToString());
                            System.Console.WriteLine("tt物理路径凭据登录类型:{0}", tmp2.LogonMethod.ToString());
                        }
                    }
                }
            }

在对web应用程序池属性进行设置时,可以参考IIS管理器中对应的属性,点击每个属性在说明框中都会有属性的名称,通过该名称可以通过代码设置对应的值。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/984455.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号