利用ASP.NET操作IIS (可以制作安装程序)

很多web安装程序都会在IIS里添加应用程序或者应用程序池,早期用ASP.NET操作IIS非常困难,不过,从7.0开始,微软提供了 Microsoft.Web.Administration 类,可以很容易操作IIS。

本文主要介绍四点:

一.添加应用程序

二.添加应用程序池

三.设置应用程序所使用的应用程序池

四.IIS里其他属性的设置

首先,必须确保电脑上已经安装了IIS,安装后,系统默认会注册一个DLL,通常位置是

C:\Windows\assembly\GAC_MSIL\Microsoft.Web.Administration\7.0.0.0__31bf3856ad364e35\Microsoft.Web.Administration.dll

要获取站点和应用程序,代码为:

 public static ApplicationPool getAppPool()
        {
            ServerManager manager = new ServerManager();
            return manager.ApplicationPools;
        }

        public static SiteCollection GetAllSite()
        {
            ServerManager manager = new ServerManager();
            SiteCollection sites = manager.Sites;
            return sites;
        }

  

一.添加应用程序

手动添加应用程序,通常是在“Default Web Site”上,右键,选择“添加应用程序...”,然后在弹出的对话框里,输入应用程序名称和物理路径,如下图所示。

 

这个操作,使用C#代码操作为

   public static void  CreateVdir(string vdir, string phydir)
        {
                ServerManager serverManager = new ServerManager();
                Site mySite = serverManager.Sites["Default Web Site"];
                mySite.Applications.Add("/" + vdir, phydir);
                serverManager.CommitChanges();

        }

首先定义一个ServerManager 对象,然后用Sites获取站点的集合。,最后调用Applications属性里的Add方法将应用程序添加到站点里。但是请注意:建立应用程序是以“/”为路径的,所以,上面代码里传入的参数,直接输入应用程序名称即可。

要在Default Web Site默认站点下建立一个名称为 test的应用程序,其物理路径为 D:\web\sample ,则调用为

CreateVdir("test","d:\\web\\sample")

  

删除一个应用程序也很简单,直接调用Remove方法即可。

    public static void DeleteVdir(string vDirName)
        {

                ServerManager serverManager = new ServerManager();
                Site mySite = serverManager.Sites["Default Web Site"];
                Microsoft.Web.Administration.Application application = mySite.Applications["/" + vDirName];
                mySite.Applications.Remove(application);
                serverManager.CommitChanges();
        }

  

二、添加应用程序池

手动在IIS里添加应用程序池为直接在IIS控制面板里添加。

使用c#代码如下

   public static void CreateAppPool( string appPoolName)
        {

                ServerManager serverManager = new ServerManager();
                serverManager.ApplicationPools.Add(appPoolName);
                ApplicationPool apppool = serverManager.ApplicationPools[appPoolName];
                apppool.ManagedPipelineMode = ManagedPipelineMode.Integrated;
                apppool.Enable32BitAppOnWin64 = true;
                apppool.ManagedRuntimeVersion = "v4.0";
                serverManager.CommitChanges();
                apppool.Recycle();

        }

从上面代码里可以看到,ApplicationPool 提供了 Enable32BitAppOnWin64 、ManagedPipelineMode 、ManagedRuntimeVersion等属性,可以很容易使用。

就像上面代码,要使用集成模式可以直接设置  apppool.ManagedPipelineMode = ManagedPipelineMode.Integrated 。

  

删除应用程序池同样也比较简单,调用remove方法

   public static void DeleteAppPool(string appPoolName)
        {

                ServerManager serverManager = new ServerManager();
                ApplicationPool apppool = serverManager.ApplicationPools[appPoolName];
                serverManager.ApplicationPools.Remove(apppool);
                serverManager.CommitChanges();
       }

  

三:设置应用程序所使用的应用程序池

手动操作:在IIS里,选择应用程序后,在高级设置里,可以直接修改应用程序所使用的应用程序池。

要完成类似上面的操作,可以设置Applications的ApplicationPoolName属性,该属性表示应用程序所使用的应用程序池名称。

     public   static void AssignVDirToAppPool(string vdir, string appPoolName)
        {

                ServerManager serverManager = new ServerManager();
                Site site = serverManager.Sites["Default Web Site"];
                site.Applications["/" + vdir].ApplicationPoolName = appPoolName;
                serverManager.CommitChanges();

        }

  

四:控制IIS里的其他属性

除了应用程序和应用程序池,使用ServerManager类还可以操控IIS里的更多属性。例如设置ISAPI和CGI的限制。

手动操作为:打开ISAPI和CGI操作,在需要的.NET版本上启用或者禁用。

完成上面操的代码如下


            using (ServerManager serverManager = new ServerManager())
              {
                  Configuration config = serverManager.GetApplicationHostConfiguration();
                  ConfigurationSection isapiCgiRestrictionSection = config.GetSection("system.webServer/security/isapiCgiRestriction");
                  ConfigurationElementCollection isapiCgiRestrictionCollection = isapiCgiRestrictionSection.GetCollection();

                  foreach (ConfigurationElement element in isapiCgiRestrictionCollection)
                  {
                      string path = element["path"].ToString();
                      string allowed = element["allowed"].ToString();
                      string description = element["description"].ToString();
                      string groupId = element["groupId"].ToString();

                      if (description == "ASP.NET v4.0.30319")
                      {

                            element["allowed"] = true;

                      }


                  }

                  serverManager.CommitChanges();
              }

  

你甚至可以在ISPAPI里增加自己的配置:

                ConfigurationElement addElement = isapiCgiRestrictionCollection.CreateElement("add");
                addElement["path"] = @"C:\Windows\abc\aspnet_isapi.dll";
                addElement["allowed"] = true;
                addElement["groupId"] = @"ContosoGroup";
                addElement["description"] = @"Contoso Extension";
                isapiCgiRestrictionCollection.Add(addElement);
                serverManager.CommitChanges();

当然,上面代码里的“难点”是,可能你并不知道IIS里,各个属性的 Section("system.webServer/security/isapiCgiRestriction") 是多少,不过不用担心

微软的官方文档已经详细列出了各个节点,你只要根据根据需要使用相应的节点即可进行相关操作。

网址为: https://docs.microsoft.com/en-us/iis/configuration/system.webserver/security/isapicgirestriction/

有了上面的属性,如果后期想定制exe版本的web安装程序,就可以使用这些类控制IIS。  

时间: 2024-10-05 16:59:21

利用ASP.NET操作IIS (可以制作安装程序)的相关文章

用 NSIS 制作安装程序

用 NSIS 制作安装程序 最近要给自己写的一个小程序做个安装程序.我的程序是用Qt开发的,所以本来想研究一下 Qt Installer Framework. 但是用 Qt Installer Framework 做安装程序好像还挺麻烦,研究了一会儿没有什么头绪,所以就暂时放弃了.然后就在网上随便搜了搜,发现有个 NSIS,看介绍还比较简单,就试着用了用,感觉还可以.这篇其实就是我学习 NSIS 时的一个学习笔记. NSIS(Nullsoft Scriptable Install System)

C#打包制作安装程序过程全记录

该文是根据网上的文章并结合自己实际打包的过程而整理的. 开发平台:VisualStudio2005中文版. 步骤如下: 1. 创建一个安装向导项目或安装部署项目 新建项目-〉其他项目类型-〉安装与部署-〉安装向导(或安装部署),如命名为setup. 2. 将要打包的项目导入到这个安装项目中,有两种方式:   第一种,自动方式,在解决方案上右击-〉添加-〉现有项目-〉选择你要打包的项目,这样就会把这个项目添加到该解决方案中来,   然后在安装项目setup上右击-〉添加-〉项目输出-〉主输出,在项

使用ASP.NET操作IIS7中使用应用程序

使用ASP.NET操作IIS7中使用应用程序 在最新发布的启明星Portal里,增加了安装程序,下面说一下.NET对IIS7操作.IIS7的操作和IIS5/6有很大的不同,在IIS7里增加了 Microsoft.Web.Administration 命名空间里,增加了ServerManager.Site几个大类来操作IIS7. 下面是一些核心代码,可以直接使用 1)建立虚拟目录 建立虚拟目录时,默认使用“Default Web Site”,也就是默认建立在Default Web Site, Cr

使用好压(HaoZip)软件打包EverEdit制作安装程序

最近使用EverEdit,使用原始的安装程序安装后,需要重新安装插件,对配置文件进行了修改,定制了工具栏.将安装后的程序目录进行打包,制作新的安装包,便于携带. 以下为打包制作过程: 打包原料:EverEdit定制版: 打包工具:国产压缩软件 HaoZip 好压: 打包过程: 1.安装HaoZip好压软件,打开后,选择需要制作为安装包的文件夹,这里选择“EverEdit”文件夹,然后点击“自解压”. 2.在选项框中,模块选项卡,选择“安装向导模块”,注意自解压文件路径. 3.文本选项卡中,输入自

2010.2.1 制作安装程序步骤

制作安装程序的步骤vs2005-20091222 1.在同一解决方案下,添加项目,选择安装和部署-安装项目,设定名称,此名称就是exe程序的名称,确定 2.在"应用程序文件夹"中右击添加程序需要的文件,系统文件会自动添加.自己的文件可以随便删除,系统文件可在"检测到的依赖项"中排出.应用程序的图标也添加进来,2个,一个主程序,一个卸载程序图标 3.添加卸载文件,从system32目录下添加"msiexec.exe"到"应用程序文件夹&q

使用NSIS (NullSoft Scriptable Install System)制作安装程序

Name "capture" OutFile "capture.exe" InstallDir "$PROGRAMFILES\capture" Page directory Page INSTFILES UninstPage uninstConfirm UninstPage instfiles Var remote_zip_file Var local_zip_file Section "" SetOutPath $INSTD

猎豹MFC--InnoSetup制作安装程序

随便建立一个MFC小程序,值谈一个对话框: 双击打开该InnoSetup: 然后文件新建: 没有的就跳过. 还缺,就再添加: 打包的时候一定呀把动态链接库一起打包 来自为知笔记(Wiz)

转 : 用Delphi编写安装程序

http://www.okbase.net/doc/details/931  还没有亲自验证过,仅收藏 当你完成一个应用软件的开发后,那么你还需要为该软件做一个规范化的安装程序,这是程序设计的最后一步,同时也是很重要的一步,因为运行安装程序往往是用户做的第一步操作.很多报刊文章介绍了许多如何利用installshield等工具软件来制作安装程序的方法,这种办法可以很快建立起较常见的安装模式,但用这种办法也有一些不足,如做成的安装程序一般较大:风格较单一:不能灵活的控制启动方式和快捷方式.其实安装

利用Advanced Installer将asp.netMVC连同IIS服务和mysql数据库一块打包成exe安装包

原文:利用Advanced Installer将asp.netMVC连同IIS服务和mysql数据库一块打包成exe安装包 因为业务需要,项目中需要把asp.netmvc项目打包成exe安装程序给客户,让客户直接可以点下一步下一步安装部署web程序,并且同时要将IIS服务和mysql一同安装到服务器上,因为客户的电脑可能是64位也可能是32位,所以在打包的时候就需要打包成两份安装包.研究了几天终于有所收获,下边就是打包的步骤. 打包步骤: 一.前期准备 1.将asp.netmvc发布到本地目录中