任何人都可以使用C#帮助在IIS中创建应用程序池吗?
完成此操作后,如何使用C#将应用程序池分配到虚拟目录?
答案 0 :(得分:10)
如果您使用的是IIS7:
要使用和设置.NET Framework版本创建应用程序池(在本例中为v2.0),请执行以下操作:
using Microsoft.Web.Administration;
...
using(ServerManager serverManager = new ServerManager())
{
ApplicationPool newPool = serverManager.ApplicationPools.Add("MyNewPool");
newPool.ManagedRuntimeVersion = "v2.0";
serverManager.CommitChanges();
}
您应该添加Microsoft.Web.Administration.dll
的引用,该引用可在以下位置找到:
%SYSTEMROOT%\System32\InetSrv
将虚拟目录分配给应用程序池(虽然我认为您的意思是应用程序):
using (ServerManager serverManager = new ServerManager())
{
// Find Default Website
Site site = serverManager.Sites.First(s => s.Id == 1);
Application newApp = site.Applications.Add("/MyNewApp",
@"C:\inetpub\wwwroot\mynewapp");
newApp.ApplicationPoolName = "MyNewPool";
serverManager.CommitChanges();
}
如果您使用的是IIS6:
using (DirectoryEntry appPools =
new DirectoryEntry("IIS://localhost/W3SVC/AppPools"))
{
using (DirectoryEntry newPool = appPools.Children.Add("MyNewPool",
"IIsApplicationPool"))
{
// Just use NetworkService as pool account
newPool.Properties["AppPoolIdentityType"].Value = 2;
newPool.CommitChanges();
}
}
以下代码在默认网站中创建一个名为MyNewApp
的应用程序,并将其分配给我们使用上面的代码示例创建的应用程序池MyNewPool
:
using (DirectoryEntry siteRoot =
new DirectoryEntry(@"IIS://Localhost/W3SVC/1/root"))
{
using (DirectoryEntry newApp =
siteRoot.Children.Add("MyNewApp", "IIsWebVirtualDir"))
{
newApp.Properties["Path"].Value = @"C:\inetpub\wwwroot\mynewapp";
newApp.Properties["AccessScript"][0] = true;
newApp.Properties["AccessFlags"].Value = 513; // AccessScript | AccessRead
newApp.Properties["AuthFlags"].Value = 7;// AuthAnonymous|AuthBasic|AuthNTLM
newApp.Properties["AppIsolated"].Value = "2";
newApp.Properties["AppRoot"].Value =
newApp.Path.Replace("IIS://Localhost", "/LM");
newApp.Properties["AppPoolId"].Value = "MyNewPool";
newApp.Properties["AppFriendlyName"].Value = "MyNewApp";
newApp.CommitChanges();
}
}
上述所有情况都是您的代码需要以管理员身份运行。
有关详细信息,请参阅:
<强> IIS7:强>
IIS 7 Configuration Reference
How to Use Microsoft.Web.Administration
<强> IIS6:强>
Using System.DirectoryServices to Configure IIS
IIS Programmatic Administration Reference
IIS Metabase Properties
答案 1 :(得分:0)
我认为这取决于您使用的是哪个版本的IIS,但请查看: http://msdn.microsoft.com/en-us/library/ms525598.aspx(示例适用于IIS7)
来源来自另一个问题:Programmatically create a web site in IIS using C# and set port number