Create a new solution and add a reference to C:\Windows\System32\InetServ\Microsoft.Web.Administration.dll. Paste the following code and you've got yourself a website on port 82 using the default application pool. In IIS it's named MyCoolWebsite.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Web.Administration;
namespace TestApp
{
class Program
{
static void Main(string[] args)
{
string siteName = "MyCoolWebsite";
string applicationPoolName = "DefaultAppPool";
string virtualDirectoryPath = "/";
string virtualDirectoryPhysicalPath = "C:\\temp\\";
string ipAddress = "*";
string tcpPort = "81";
string hostHeader = "";
string applicationPath = "/";
long highestId = 1;
using (ServerManager mgr = new ServerManager())
{
Site site = mgr.Sites[siteName];
if (site != null)
return; // Site bestaat al
ApplicationPool appPool = mgr.ApplicationPools[applicationPoolName];
if (appPool == null)
throw new Exception(String.Format("Application Pool: {0} does not exist.", applicationPoolName));
foreach (Site mysite in mgr.Sites)
{
if (mysite.Id > highestId)
highestId = mysite.Id;
}
highestId++;
site = mgr.Sites.CreateElement();
site.SetAttributeValue("name", siteName);
site.Id = highestId;
site.Bindings.Clear();
string bind = ipAddress + ":" + tcpPort + ":" + hostHeader;
Binding binding = site.Bindings.CreateElement();
binding.Protocol = "http";
binding.BindingInformation = bind;
site.Bindings.Add(binding);
//site.Bindings.Add(bind, "http");
Application app = site.Applications.CreateElement();
app.Path = applicationPath;
app.ApplicationPoolName = applicationPoolName;
VirtualDirectory vdir = app.VirtualDirectories.CreateElement();
vdir.Path = virtualDirectoryPath;
vdir.PhysicalPath = virtualDirectoryPhysicalPath;
app.VirtualDirectories.Add(vdir);
site.Applications.Add(app);
mgr.Sites.Add(site);
mgr.CommitChanges();
}
}
}
}
No comments:
Post a Comment