SIGN UP MEMBER LOGIN:    
ARTICLE

Create FTP and Web IIS Virtual Directory using C#

Posted by Dipal Choksi Articles | Internet & Web July 03, 2002
In this example we will create a Windows Form Project that will create new FTP and Web IIS Virtual Directories from code based on the name and path specified by the user.
Reader Level:

In this example we will create a Windows Form Project that will create new FTP and Web IIS Virtual Directories from code based on the name and path specified by the user. You can create virtual directories on the local computer by specifying the server name as "localhost" or you can create the virtual directory on a remote computer by specifying the machine name.

We make use of the DirectoryServices namespace for creating the Virtual directory.

Step 1: Create the Project and the basic User Interface.

Create a new Visual C# Windows Forms Project and add controls on the default form as shown below.



Figure 1: User interface 

Control Property Name Property Value
Label Text Server
TextBox Name txtServer
Text localhost
Label Text Virtual Directory Name
TextBox Name txtVDirName
Label Text Virtual Directory Path
TextBox Name txtVDir
GroupBox Text Virtual Directory Type
RadioButton Label Web
RadioButton Label FTP
Button
Label Name lblStatus

The windows form allows the user to specify the server name on which to create the virtual directory, the virtual directory name, the virtual directory path, the type of virtual directory (FTP or Web). We will now add the code to create the virtual directory when the button is clicked. The code is specified in the code listing below.

We first determine if the user has selected to create an FTP virtual directory or a Web Virtual Directory. Based on this selection, we set the values for the schema name and a part of the path for the IIS root to create the node in. We now create a DirectoryEntry object for the root of the IIS directory on the server specified by the user which points to the web or ftp root. We then add a node to the children collection of the root node and set the value for the Path property of the newly created node. If the user selected to create a web virtual directory, we set the new node as an application. We then commit the changes and close the directory entry nodes. Finally we display the status - whether successful or error, to the user. You need to make sure that the user has the privileges to create the new virtual directories before running the sample.

private void button1_Click(object sender, System.EventArgs e)
{
string strSchema= "";
string strRootSubPath = "";
if (radioButton1.Checked)
{
strSchema = "IIsWebVirtualDir";
strRootSubPath = "/W3SVC/1/Root";
}
if (radioButton2.Checked)
{
strSchema = "IIsFtpVirtualDir";
strRootSubPath = "/MSFTPSVC/1/Root";
}
if (strSchema == "")
{
strSchema = "IIsWebVirtualDir";
strRootSubPath = "/W3SVC/1/Root";
}
DirectoryEntry deRoot=
new DirectoryEntry("IIS://" + txtServer.Text + strRootSubPath);
try
{
deRoot.RefreshCache();
DirectoryEntry deNewVDir = deRoot.Children.Add(txtVDirName.Text,strSchema);
deNewVDir.Properties["Path"].Insert(0,txtVDir.Text);
deNewVDir.CommitChanges();
deRoot.CommitChanges();
// Create a Application
if (strSchema == "IIsWebVirtualDir")
deNewVDir.Invoke("AppCreate",
true);
// Save Changes
deNewVDir.CommitChanges();
deRoot.CommitChanges();
deNewVDir.Close();
deRoot.Close();
lblStatus.Text = "Virtual Directory " + txtVDirName.Text + "(" + txtVDir.Text + ") has been created";
}
catch (Exception ex)
{
lblStatus.Text = "Error: " + ex.Message;
}
}

Code Listing : Button Click event handler code - create a new virtual directory.

Please refer to the complete code listing available for download at the top of the article.  



Figure : Creating a virtual directory from our program. This creates a FTP Virtual directory named "TestFTPDir" pointing to path "C:\Temp"

Conclusion:

In this article, we saw how to create FTP and Web virtual directories programmatically. This can be very useful in deployment scenarios.

Login to add your contents and source code to this article
share this article :
post comment
 

Yeah...its helpful for me.. thanks a lot.

Posted by Kumar Veerabadran Nov 11, 2011

Hi everbody


I want to ask a question. I want to write a interface.  its mission is to send video files to some different ip adresses over internet. 
  Can you advice me?  in which language can I write it.

Posted by Kardes ASLAN Aug 24, 2009

Here's how to do it deNewVDir.Properties["AccessWrite"][0] = true Can't explain all of it yet, but I'll learn.

Posted by rob Dec 12, 2008

FTP is set up properly, but defaults to only read access... How to make it writable. User account has permission to write, but ftp account does not.

Posted by rob Dec 12, 2008

Comment:

Posted by gaurav singh Oct 15, 2008
Nevron Gauge for SharePoint
Become a Sponsor
PREMIUM SPONSORS
  • Get 2 Months Free of ASP.NET Hosting for Only $4.95/month! Receive FREE MS SQL and MySQL Databases Including ASP.NET 4/3.5, MVC 3.0, Silverlight 4, Windows 2008/IIS 7.0 Plus FREE IIS 7 Modules. Host UNLIMITED ASP.NET Web Sites - Click Here!
    Finally – a virtual platform that delivers next-generation Windows Server 2008 Hyper-V virtualization technology from a managed hosting partner you can truly depend on. Visit www.maximumasp.com/max for a FREE 30 day trial. Hurry offer ends soon. Climb aboard the MaxV platform and take advantage of High Availability, Intelligent Monitoring, Recurrent Backups, and Scalability – with no hassle or hidden fees. As a managed hosting partner focused solely on Microsoft technologies since 2000, MaximumASP is uniquely qualified to provide the superior support that our business is built on. Unparalleled expertise with Microsoft technologies lead to working directly with Microsoft as first to offer IIS 7 and SQL 2008 betas in a hosted environment; partnering in the Go Live Program for Hyper-V; and product co-launches built on WS 2008 with Hyper-V technology.
Become a Sponsor