private void CreateVirtualDir(string WebSite, string AppName, string Path)
{
System.DirectoryServices.DirectoryEntry IISSchema = new System.DirectoryServices.DirectoryEntry("IIS://" + WebSite + "/Schema/AppIsolated");
bool CanCreate = !(IISSchema.Properties("Syntax").Value.ToString.ToUpper() == "BOOLEAN");
IISSchema.Dispose();
if (CanCreate) {
bool PathCreated;
try {
System.DirectoryServices.DirectoryEntry IISAdmin = new System.DirectoryServices.DirectoryEntry("IIS://" + WebSite + "/W3SVC/1/Root");
//make sure folder exists
if (!System.IO.Directory.Exists(Path)) {
System.IO.Directory.CreateDirectory(Path);
PathCreated = true;
}
//If the virtual directory already exists then delete it
foreach (System.DirectoryServices.DirectoryEntry VD in IISAdmin.Children) {
if (VD.Name == AppName) {
IISAdmin.Invoke("Delete", new string[] {VD.SchemaClassName, AppName});
IISAdmin.CommitChanges();
break; // TODO: might not be correct. Was : Exit For
}
}
//Create and setup new virtual directory
System.DirectoryServices.DirectoryEntry VDir = IISAdmin.Children.Add(AppName, "IIsWebVirtualDir");
VDir.Properties("Path").Item(0) = Path;
VDir.Properties("AppFriendlyName").Item(0) = AppName;
VDir.Properties("EnableDirBrowsing").Item(0) = false;
VDir.Properties("AccessRead").Item(0) = true;
VDir.Properties("AccessExecute").Item(0) = true;
VDir.Properties("AccessWrite").Item(0) = false;
VDir.Properties("AccessScript").Item(0) = true;
VDir.Properties("AuthNTLM").Item(0) = true;
VDir.Properties("EnableDefaultDoc").Item(0) = true;
VDir.Properties("DefaultDoc").Item(0) = "default.htm,default.aspx,default.asp";
VDir.Properties("AspEnableParentPaths").Item(0) = true;
VDir.CommitChanges();
//the following are acceptable params
//INPROC = 0
//OUTPROC = 1
//POOLED = 2
VDir.Invoke("AppCreate", 1);
}
catch (Exception Ex) {
if (PathCreated) {
System.IO.Directory.Delete(Path);
}
throw Ex;
}
}
}
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment