手动创建应用程序池,并自动将程序assign到新创建的池中(MSI制作)

我在部署ASP.net应用程序的时候,在IIS中都是创建在默认的应用池当中.我们能否在部署的时候创建 自己的应用池呢?

本文就带你一起创建自己的应用池!

1 using System;
2 using System.IO;
3 using System.DirectoryServices;
4 using System.Reflection;
5 using System.Runtime.InteropServices;
6 using System.Collections;
7
8 namespace System_DirectoryServices_DirectoryEntry_ConfigIIS
9 {
10   class Program
11   {
12     static void Main(string[] args)
13     {
14
15
16
17 CreateAppPool("IIS://Localhost/W3SVC/AppPools", "MyAppPool");
18
19
20
21 CreateVDir("IIS://Localhost/W3SVC/1/Root", "MyVDir", "D:\\Inetpub\\Wwwroot");
22
23
24
25 AssignVDirToAppPool("IIS://Localhost/W3SVC/1/Root/MyVDir", "MyAppPool");
26
27
28
29 }
30
31
32
33 static void CreateAppPool(string metabasePath, string appPoolName)
34 {
35   //  metabasePath is of the form "IIS://<servername>/W3SVC/AppPools"
36   //    for example "IIS://localhost/W3SVC/AppPools"
37   //  appPoolName is of the form "<name>", for example, "MyAppPool"
38   Console.WriteLine("\nCreating application pool named {0}/{1}:", metabasePath, appPoolName);
39
40   try
41   {
42     if (metabasePath.EndsWith("/W3SVC/AppPools"))
43     {
44       DirectoryEntry newpool;
45       DirectoryEntry apppools = new DirectoryEntry(metabasePath);
46       newpool = apppools.Children.Add(appPoolName, "IIsApplicationPool");
47       newpool.CommitChanges();
48       Console.WriteLine(" Done.");
49     }
50     else
51       Console.WriteLine(" Failed in CreateAppPool; application pools can only be created in the */W3SVC/AppPools node.");
52   }
53   catch (Exception ex)
54   {
55     Console.WriteLine("Failed in CreateAppPool with the following exception: \n {0}", ex.Message);
56   }
57 }
58
59
60
61 static void CreateVDir(string metabasePath, string vDirName, string physicalPath)
62 {
63   //  metabasePath is of the form "IIS://<servername>/<service>/<siteID>/Root[/<vdir>]"
64   //    for example "IIS://localhost/W3SVC/1/Root"
65   //  vDirName is of the form "<name>", for example, "MyNewVDir"
66   //  physicalPath is of the form "<drive>:\<path>", for example, "C:\Inetpub\Wwwroot"
67   Console.WriteLine("\nCreating virtual directory {0}/{1}, mapping the Root application to {2}:",
68       metabasePath, vDirName, physicalPath);
69
70   try
71   {
72     DirectoryEntry site = new DirectoryEntry(metabasePath);
73     string className = site.SchemaClassName.ToString();
74     if ((className.EndsWith("Server")) || (className.EndsWith("VirtualDir")))
75     {
76       DirectoryEntries vdirs = site.Children;
77       DirectoryEntry newVDir = vdirs.Add(vDirName, (className.Replace ("Service", "VirtualDir")));
78       newVDir.Properties["Path"][0] = physicalPath;
79       newVDir.Properties["AccessScript"][0] = true;
80       // These properties are necessary for an application to be created.
81       newVDir.Properties["AppFriendlyName"][0] = vDirName;
82       newVDir.Properties["AppIsolated"][0] = "1";
83       newVDir.Properties["AppRoot"][0] = "/LM" + metabasePath.Substring (metabasePath.IndexOf("/", ("IIS://".Length)));
84
85       newVDir.CommitChanges();
86
87       Console.WriteLine(" Done.");
88     }
89     else
90       Console.WriteLine(" Failed. A virtual directory can only be created in a site or virtual directory node.");
91   }
92   catch (Exception ex)
93   {
94     Console.WriteLine("Failed in CreateVDir with the following exception: \n{0}", ex.Message);
95   }
96 }
97
98
99
100 static void AssignVDirToAppPool(string metabasePath, string appPoolName)
101 {
102   //  metabasePath is of the form "IIS://<servername>/W3SVC/<siteID>/Root[/<vDir>]"
103   //    for example "IIS://localhost/W3SVC/1/Root/MyVDir"
104   //  appPoolName is of the form "<name>", for example, "MyAppPool"
105   Console.WriteLine("\nAssigning application {0} to the application pool named {1}:", metabasePath, appPoolName);
106
107   try
108   {
109     DirectoryEntry vDir = new DirectoryEntry(metabasePath);
110     string className = vDir.SchemaClassName.ToString();
111     if (className.EndsWith("VirtualDir"))
112     {
113       object[] param = { 0, appPoolName, true };
114       vDir.Invoke("AppCreate3", param);
115       vDir.Properties["AppIsolated"][0] = "2";
116       Console.WriteLine(" Done.");
117     }
118     else
119       Console.WriteLine(" Failed in AssignVDirToAppPool; only virtual directories can be assigned to application pools");
120   }
121   catch (Exception ex)
122   {
123     Console.WriteLine("Failed in AssignVDirToAppPool with the following exception: \n{0}", ex.Message);
124   }
125 }
126
127
128
129   }
130 }
131
132
133

出处:http://mqsuper.cnblogs.co

时间: 2024-12-09 04:30:49

手动创建应用程序池,并自动将程序assign到新创建的池中(MSI制作)的相关文章

C# 2.0:使用匿名方法、迭代程序和局部类来创建优雅的代码

程序|创建 本文基于 Microsoft Visual Studio 2005 的预发布版本,它以前的代码名称为"Whidbey".此处所包含的任何信息都可能会改变. 本文讨论: • 遍历集合 • 跨文件类定义 • 与委托一起使用的匿名方法 • Visual Studio 2005 中的其他 C# 新功能 本文使用下列技术: • C# 和 Visual Studio 可以在此下载代码: • C20.exe (164KB) 本页内容 迭代程序 迭代程序实现 递归迭代 局部类型 匿名方法

java+ 程序 子类继承父类 创建子类对象时构造方法中无显示调用父类构造方法

问题描述 java+ 程序 子类继承父类 创建子类对象时构造方法中无显示调用父类构造方法 创建子类对象时,Student s = new Student(""school""); 该构造方法中没有显示调用父类的构造方法,但还是编译成功了,该构造方法调用自身的构造函数,此构造函数中有调用父类的构造方法,执行成功的原因是什么 解决方案 不用显示调用,会自动执行父类的构造 解决方案二: 子类的构造方法中,如果没有显示调用父类的构造方法,会默认调用父类无参的构造方法.类似于

《精通 ASP.NET MVC 5》----2.4 创建一个简单的数据录入应用程序

2.4 创建一个简单的数据录入应用程序 本章的其余部分将通过建立一个简单的数据录入应用程序来考查MVC的更多基本特性.本小节打算分步进行,目的是演示MVC的运用,因此会跳过对幕后工作原理的一些解释.但不必担心,在后面的章节中会重新深入地讨论这些论题. 2.4.1 设置场景 假设一个朋友决定举行一个"新年除夕晚会",于是她请笔者为其创建一个Web应用程序,以便让受邀人进行电子回复(RSVP).她的要求有以下4个关键特性. 一个显示此晚会信息的首页. 一个可以用来进行电子回复(RSVP)的

[IT]C/S自动升级程序原理

背景 我们给几个景区做了一个C/S项目,但是由于需求的变化,或者是Bug的出现,我们不得不修改程序程序.众所周知,C/S结构的应用程序可维护性比较差,它不同于B/S结构的程序,可以随着服务器端的更新,立即显现出来.因此我们不得不经常跑去景区手动更换程序.这样非常的麻烦,因此我们就做了一个自动升级的程序,由景区自己下载更新. 运行形式 (1)是作为一种服务,用户开机后自动隐藏运行.这种方式技术成本高,要求高可靠性和可用性.偶尔也会引起用户的反感.因windows操作系统升级就是这样进行的; (2)

《精通 ASP.NET MVC 4》----2.4 创建一个简单的数据录入应用程序

2.4 创建一个简单的数据录入应用程序 精通 ASP.NET MVC 4 本章的其余部分将通过建立一个简单的数据录入应用程序,来考察MVC的更多基本特性.本节将分步进行,目的是演示MVC的运转,因此会跳过对幕后工作原理的一些解释.不用担心--在后面的章节中还会重新深入地讨论这些论题. 2.4.1 设置场景 设想一个朋友要主办一个"新年除夕晚会",需要创建一个Web网站,以便让被邀请人进行RSVP(电子回复).这个网站需要以下四个关键特性: 一个显示此晚会信息的主页: 一个可以用来进行R

垃圾引用防治补丁以及发送引用修正补丁的自动安装程序_应用技巧

实在没辙,PJBlog 的垃圾引用防治补丁以及新日志发送失败的修正补丁发布后,天天都有因为修改错误而找上门询问的.为了简化大家的升级步骤,减少升级造成的错误.本人参考了部分前辈的程序后,做出了前面两个补丁的自动安装程序,代码替换,数据库升级都一步到位.恩恩.废话少讲,给下载,大家记得升级前要备份哈,尤其是数据库一定要备份一次. 虽然本程序在本人的本地环境里的全新 PJBlog 上测试成功,但不能排除装过其他插件的博客不会出现问题.如果您升级出现了差错请到:http://www.myyu.net/

iis 创建应用程序池的方法与分析第1/3页_win服务器

当 IIS 6.0 在工作进程隔离模式下运行时,可将 Web 应用程序组合到应用程序池中.应用程序池允许将特定配置设置应用于多个应用程序组,并允许工作进程为这些应用程序提供服务.可向应用程序池指定任何 Web 目录或虚拟目录. 通过创建新应用程序池并向它们指定网站和 Web 应用程序,可提高服务器的效率和可靠性,并使其他应用程序即使在新应用程序池终止时也总是可用. 要点 您必须是本地计算机上 Administrators 组的成员或者必须被委派了相应的权限,才能执行下列步骤.作为安全性的最佳*作

C#操作IIS创建应用程序池出现异常:无效索引(Exception from HRESULT:0x80070585)

在使用C#操作IIS创建应用程序池出现异常:无效索引(Exception from HRESULT:0x80070585) 相关代码: public static string CreateAppPool(string appPoolName, string frameworkVersion, string managedPipelineMode) { DirectoryEntry rootfolder = new DirectoryEntry("IIS://localhost/W3SVC/AP

【转】]Android实现开机自动运行程序

有些时候,应用需要在开机时就自动运行,例如某个自动从网上更新内容的后台service.怎样实现开机自动运行的应用?在撰写本文时,联想到高焕堂先生以"Don't call me, I'll call you back!"总结Android框架,真是说到点子上了.理解这句话的含义,许多有关Android平台上实现某种功能的问题,都能迎刃而解.   使用场景:手机开机后,自动运行程序,在屏幕上显示"Hello. I started!"字样. 背景知识:当Android启动