| |

VerySource

 Forgot password?
 Register
Search
View: 603|Reply: 2

How to manage the IIS directory through code?

[Copy link]

1

Threads

1

Posts

2.00

Credits

Newbie

Rank: 1

Credits
2.00

 China

Post time: 2020-2-11 14:00:01
| Show all posts |Read mode
How to create an IIS directory with code
Reply

Use magic Report

0

Threads

13

Posts

9.00

Credits

Newbie

Rank: 1

Credits
9.00

 China

Post time: 2020-4-6 23:15:01
| Show all posts
How to operate IIS in .Net (source code)
using System;
using System.Data;
using System.DirectoryServices;
using System.Collections;
namespace Aspcn.Management
{
/// <summary>
/// Summary description of IISManager.
/// </ summary>
public class IISManager
{
// Define what needs to be used
private string _server, _website;
private VirtualDirectories _virdirs;
protected System.DirectoryServices.DirectoryEntry rootfolder;
private bool _batchflag;
public IISManager ()
{
// By default, localhost is used, that is, access to the local machine
_server = "localhost";
_website = "1";
_batchflag = false;
}
public IISManager (string strServer)
{
_server = strServer;
_website = "1";
_batchflag = false;
}
/// <summary>
/// Define public attributes
/// </ summary>

// The Server attribute defines the name of the access machine, which can be IP and calculated name
public string Server
{
get {return _server;}
set {_server = value;}
}
// The WebSite attribute definition is a number, for convenience, use string
// Generally speaking, the first host is 1, the second host is 2, and so on
public string WebSite
{
get {return _website;}
set {_website = value;}
}

// The name of the virtual directory
public VirtualDirectories VirDirs
{
get {return _virdirs;}
set {_virdirs = value;}
}
/// <summary>
/// Define public methods
/// </ summary>

//connect to the server
public void Connect ()
{
ConnectToServer ();
}
Reply

Use magic Report

0

Threads

13

Posts

9.00

Credits

Newbie

Rank: 1

Credits
9.00

 China

Post time: 2020-4-7 00:45:01
| Show all posts
// For convenience of reloading
public void Connect (string strServer)
{
_server = strServer;
ConnectToServer ();
}
// For convenience of reloading
public void Connect (string strServer, string strWebSite)
{
_server = strServer;
_website = strWebSite;
ConnectToServer ();
}
// Determine whether to save this virtual directory
public bool Exists (string strVirdir)
{
return _virdirs.Contains (strVirdir);
}
// Add a virtual directory
public void Create (VirtualDirectory newdir)
{
string strPath = "IIS: //" + _server + "/ W3SVC /" + _website + "/ ROOT /" + newdir.Name;
if (! _ virdirs.Contains (newdir.Name) || _batchflag)
{
try
{
// Add to ROOT's Children collection
DirectoryEntry newVirDir = rootfolder.Children.Add (newdir.Name, "IIsWebVirtualDir");
newVirDir.Invoke ("AppCreate", true);
newVirDir.CommitChanges ();
rootfolder.CommitChanges ();
// Then update the data
UpdateDirInfo (newVirDir, newdir);
}
catch (Exception ee)
{
throw new Exception (ee.ToString ());
}
}
else
{
throw new Exception ("This virtual directory is already exist.");
}
}
// Get a virtual directory
public VirtualDirectory GetVirDir (string strVirdir)
{
VirtualDirectory tmp = null;
if (_virdirs.Contains (strVirdir))
{
tmp = _virdirs.Find (strVirdir);
((VirtualDirectory) _virdirs [strVirdir]). Flag = 2;
}
else
{
throw new Exception ("This virtual directory is not exists");
}
return tmp;
}

// Update a virtual directory
public void Update (VirtualDirectory dir)
{
// Determine whether the virtual directory that needs to be changed exists
if (_virdirs.Contains (dir.Name))
{
DirectoryEntry ode = rootfolder.Children.Find (dir.Name, "IIsWebVirtualDir");
UpdateDirInfo (ode, dir);
}
else
{
throw new Exception ("This virtual directory is not exists.");
}
}

// Delete a virtual directory
public void Delete (string strVirdir)
{
if (_virdirs.Contains (strVirdir))
{
object [] paras = new object [2];
paras [0] = "IIsWebVirtualDir"; // Indicating that the operation is a virtual directory
paras [1] = strVirdir;
rootfolder.Invoke ("Delete", paras);
rootfolder.CommitChanges ();
}
else
{
throw new Exception ("Can't delete" + strVirdir + ", because it isn't exists.");
}
}
// Batch update
public void UpdateBatch ()
{
BatchUpdate (_virdirs);
}
// Reload one :-)
public void UpdateBatch (VirtualDirectories vds)
{
BatchUpdate (vds);
}

/// <summary>
/// Private method
/// </ summary>

//connect to the server
private void ConnectToServer ()
{
string strPath = "IIS: //" + _server + "/ W3SVC /" + _website + "/ ROOT";
try
{
this.rootfolder = new DirectoryEntry (strPath);
_virdirs = GetVirDirs (this.rootfolder.Children);
}
catch (Exception e)
{
throw new Exception ("Can't connect to the server [" + _server + "] ...", e);
}
}
// Perform batch update
private void BatchUpdate (VirtualDirectories vds)
{
_batchflag = true;
foreach (object item in vds.Values)
{
VirtualDirectory vd = (VirtualDirectory) item;
switch (vd.flag)
{
case 0:
break;
case 1:
Create (vd);
break;
case 2:
Update (vd);
break;
}
}
_batchflag = false;
}
// Update stuff
private void UpdateDirInfo (DirectoryEntry de, VirtualDirectory vd)
{
de.Properties ["AnonymousUserName"] [0] = vd.AnonymousUserName;
de.Properties ["AnonymousUserPass"] [0] = vd.AnonymousUserPass;
de.Properties ["AccessRead"] [0] = vd.AccessRead;
de.Properties ["AccessExecute"] [0] = vd.AccessExecute;
de.Properties ["AccessWrite"] [0] = vd.AccessWrite;
de.Properties ["AuthBasic"] [0] = vd.AuthBasic;
de.Properties ["AuthNTLM"] [0] = vd.AuthNTLM;
de.Properties ["ContentIndexed"] [0] = vd.ContentIndexed;
de.Properties ["EnableDefaultDoc"] [0] = vd.EnableDefaultDoc;
de.Properties ["EnableDirBrowsing"] [0] = vd.EnableDirBrowsing;
de.Properties ["AccessSSL"] [0] = vd.AccessSSL;
de.Properties ["AccessScript"] [0] = vd.AccessScript;
de.Properties ["DefaultDoc"] [0] = vd.DefaultDoc;
de.Properties ["Path"] [0] = vd.Path;
de.CommitChanges ();
}

// Get virtual directory collection
private VirtualDirectories GetVirDirs (DirectoryEntries des)
{
VirtualDirectories tmpdirs = new VirtualDirectories ();
foreach (DirectoryEntry de in des)
{
if (de.SchemaClassName == "IIsWebVirtualDir")
{
VirtualDirectory vd = new VirtualDirectory ();
vd.Name = de.Name;
vd.AccessRead = (bool) de.Properties ["AccessRead"] [0];
vd.AccessExecute = (bool) de.Properties ["AccessExecute"] [0];
vd.AccessWrite = (bool) de.Properties ["AccessWrite"] [0];
vd.AnonymousUserName = (string) de.Properties ["AnonymousUserName"] [0];
vd.AnonymousUserPass = (string) de.Properties ["AnonymousUserName"] [0];
vd.AuthBasic = (bool) de.Properties ["AuthBasic"] [0];
vd.AuthNTLM = (bool) de.Properties ["AuthNTLM"] [0];
vd.ContentIndexed = (bool) de.Properties ["ContentIndexed"] [0];
vd.EnableDefaultDoc = (bool) de.Properties ["EnableDefaultDoc"] [0];
vd.EnableDirBrowsing = (bool) de.Properties ["EnableDirBrowsing"] [0];
vd.AccessSSL = (bool) de.Properties ["AccessSSL"] [0];
vd.AccessScript = (bool) de.Properties ["AccessScript"] [0];
vd.Path = (string) de.Properties ["Path"] [0];
vd.flag = 0;
vd.DefaultDoc = (string) de.Properties ["DefaultDoc"] [0];
tmpdirs.Add (vd.Name, vd);
}
}
return tmpdirs;
}

}
/// <summary>
/// VirtualDirectory class
/// </ summary>
public class VirtualDirectory
{
private bool _read, _execute, _script, _ssl, _write, _authbasic, _authntlm, _indexed, _endirbrow, _endefaultdoc;
private string _ausername, _auserpass, _name, _path;
private int _flag;
private string _defaultdoc;
/// <summary>
/// Constructor
/// </ summary>
public VirtualDirectory ()
{
SetValue ();
}
public VirtualDirectory (string strVirDirName)
{
_name = strVirDirName;
SetValue ();
}
private void SetValue ()
{
_read = true; _execute = false; _script = false; _ssl = false; _write = false; _authbasic = false; _authntlm = false;
_indexed = false; _endirbrow = false; _endefaultdoc = false;
_flag = 1;
_defaultdoc = "default.htm, default.aspx, default.asp, index.htm";
_path = "C:\\";
_ausername = ""; _auserpass = ""; _ name = "";
}
/// <summary>
/// Define attributes, IISVirtualDir too many attributes
/// I only made some of the more important ones, other guys need to add it.
/// </ summary>

public int flag
{
get {return _flag;}
set {_flag = value;}
}
public bool AccessRead
{
get {return _read;}
set {_read = value;}
}
public bool AccessWrite
{
get {return _write;}
set {_write = value;}
}
public bool AccessExecute
{
get {return _execute;}
set {_execute = value;}
}
public bool AccessSSL
{
get {return _ssl;}
set {_ssl = value;}
}
public bool AccessScript
{
get {return _script;}
set {_script = value;}
}
public bool AuthBasic
{
get {return _authbasic;}
set {_authbasic = value;}
}
public bool AuthNTLM
{
get {return _authntlm;}
set {_authntlm = value;}
}
public bool ContentIndexed
{
get {return _indexed;}
set {_indexed = value;}
}
public bool EnableDirBrowsing
{
get {return _endirbrow;}
set {_endirbrow = value;}
}
public bool EnableDefaultDoc
{
get {return _endefaultdoc;}
set {_endefaultdoc = value;}
}
public string Name
{
get {return _name;}
set {_name = value;}
}
public string Path
{
get {return _path;}
set {_path = value;}
}
public string DefaultDoc
{
get {return _defaultdoc;}
set {_defaultdoc = value;}
}
public string AnonymousUserName
{
get {return _ausername;}
set {_ausername = value;}
}
public string AnonymousUserPass
{
get {return _auserpass;}
set {_auserpass = value;}
}
}
/// <summary>
/// Collection of VirtualDirectories
/// </ summary>

public class VirtualDirectories: System.Collections.Hashtable
{
public VirtualDirectories ()
{
}
// Add new method
public VirtualDirectory Find (string strName)
{
return (VirtualDirectory) this [strName];
}
}
}
Reply

Use magic Report

You have to log in before you can reply Login | Register

Points Rules

Contact us|Archive|Mobile|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

Quick Reply To Top Return to the list