很多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。  

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

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

    使用ASP.NET操作IIS7中使用应用程序   在最新发布的启明星Portal里,增加了安装程序,下面说一下.NET对IIS7操作.IIS7的操作和IIS5/6有很大的不同,在IIS7里增加了 Mi ...

  2. Wix打包系列(一)如何使用wix制作安装程序

    原文:Wix打包系列(一)如何使用wix制作安装程序 最近由于项目需要,需要给客户制作安装程序,一开始使用vs2005自带的打包工程来打包,但用了一段时间发现vs打包太死板,而且使用起来问题很多.收费 ...

  3. VS2010制作安装程序

    转自(http://blog.csdn.net/wenmang1977/article/details/7733685) 序 前些天想写一下制作安装程序,由于要写的内容比较多,一拖再拖,不过坚持就是胜 ...

  4. Unity 制作安装程序和卸载程序

    1.最简单的方式通过winrar制作 但是做出来的页面好low的感觉 参考链接:https://www.cnblogs.com/fetty/p/5185913.html 2.通过inno制作安装程序: ...

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

    最近使用EverEdit,使用原始的安装程序安装后,需要重新安装插件,对配置文件进行了修改,定制了工具栏.将安装后的程序目录进行打包,制作新的安装包,便于携带. 以下为打包制作过程: 打包原料:Eve ...

  6. vs.net应用程序图标以及制作安装程序快捷方式图标设置

           我们通常在开发软件完毕后需要打包制作安装程序,这个时侯一般都会需要设置应用程序的图标,使用默认的图标一般都比较难看,那么我们应该怎样设置自定义的图标呢? 我现在要讲的图标设置有两种情况, ...

  7. 开发机器上利用vs2013调试远程IIS上的c#程序

    当远程IIS上的C#程序出现问题,怎么排错,一般我们通过看日志排查错误的方法,这种方法在程序异常日志都打印出来的情况下是可以解决的,但如果程序日志不详细,或者从日志看不出有用的内容的时候怎么排错? 本 ...

  8. 使用WINRAR来制作安装程序

    1. WINRAR版本 2. 将所有文件放在同一个文件夹下 3. 选中所有文件点击右键 -> Add to archive 4. General设置 5. Advanced 设置 6. 确定开始 ...

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

    该文是根据网上的文章并结合自己实际打包的过程而整理的. 开发平台:VisualStudio2005中文版. 步骤如下: 1. 创建一个安装向导项目或安装部署项目 新建项目-〉其他项目类型-〉安装与部署 ...

随机推荐

  1. php Yii2 报错unexpected '}'

    报错unexpected '}'一般是缺少":"导致的

  2. lsnrctl start 命令未找到 数据库连接报错“ORA-12541: TNS: 无监听程序”

    1. lsnrctl start 命令未找到 或者bash:lsnrctl:command not found. su - oralce        切换用户的时候,中间要有-,而且-的两边有空格, ...

  3. Servlet使用简介

    Servlet的使用基本包含三个步骤: 1.继承HttpServlet 或实现Servlet 接口 (根据源码分析最终都是对servlet接口的实现) 2.配置地址: 配置web.xml 或者用注解的 ...

  4. MySQL(一)之MySQL简介与安装

    大家可能都在用MySQL,其实我也是在用MySQL的,但是你知道吗?大部分人都是在windows中使用,这里将介绍一下在windows中的安装分为安装包安装与MSI包安装,以及在linux中的在线安装 ...

  5. Redis单机版和集群版的安装和部署

    1.单机版的安装 本次使用redis3.0版本.3.0版本主要增加了redis集群功能. 安装的前提条件: 需要安装gcc:yum install gcc-c++ 1.1 安装redis 1.下载re ...

  6. 设计模式,Let's “Go”! (下)

    * { color: #3e3e3e } body { font-family: "Helvetica Neue", Helvetica, "Hiragino Sans ...

  7. django 5 form1

    ---------------------Form表单验证(用户请求验证+生成HTML标签) 示例:用户管理 a. 添加用户页面 - 显示HTML标签 - 提交:数据验证 - 成功之后保存 - 错误显 ...

  8. 学会数据库读写分离、分表分库——用Mycat,这一篇就够了!

    系统开发中,数据库是非常重要的一个点.除了程序的本身的优化,如:SQL语句优化.代码优化,数据库的处理本身优化也是非常重要的.主从.热备.分表分库等都是系统发展迟早会遇到的技术问题问题.Mycat是一 ...

  9. VB与C#语言部分不用的地方Part1

    1. 数据类型: ① 日期型(Date)      表示日期和时间用两个“#”符号把日期和时间的值括起来,如:#08/20/2001#.#2001-08-20#. ② 变体型(Variant)    ...

  10. python __name__ 变量的含义

    python __name__ 变量的含义 if __name__ == '__main__': tf.app.run() 当python读入程序时,会初始化一些系统变量.如果当前程序是主程序,__n ...