# VBForums CodeBank > CodeBank - ASP / ASP.NET / MVC / Web API >  Create Virtual Directory in IIS using VB.NET

## Wokawidget

You need to add a reference into your app for *System.DirectoryServices*
Then use:

VB Code:
Private Sub CreateVirtualDir(ByVal WebSite As String, ByVal AppName As String, ByVal Path As String)
         Dim IISSchema As New System.DirectoryServices.DirectoryEntry("IIS://" & WebSite & "/Schema/AppIsolated")
        Dim CanCreate As Boolean = Not IISSchema.Properties("Syntax").Value.ToString.ToUpper() = "BOOLEAN"
        IISSchema.Dispose()
         If CanCreate Then
            Dim PathCreated As Boolean
             Try
                Dim IISAdmin As New System.DirectoryServices.DirectoryEntry("IIS://" & WebSite & "/W3SVC/1/Root")
                 'make sure folder exists
                If Not System.IO.Directory.Exists(Path) Then
                    System.IO.Directory.CreateDirectory(Path)
                    PathCreated = True
                End If
                 'If the virtual directory already exists then delete it
                For Each VD As System.DirectoryServices.DirectoryEntry In IISAdmin.Children
                    If VD.Name = AppName Then
                        IISAdmin.Invoke("Delete", New String() {VD.SchemaClassName, AppName})
                        IISAdmin.CommitChanges()
                        Exit For
                    End If
                Next VD
                 'Create and setup new virtual directory
                Dim VDir As System.DirectoryServices.DirectoryEntry = 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 Ex As Exception
                If PathCreated Then
                    System.IO.Directory.Delete(Path)
                End If
                Throw Ex
            End Try
        End If
    End Sub
This is used in the following way:

VB Code:
CreateVirtualDir("LocalHost", "Woof", "C:\MyWebProjects\Woof")
This creates a Virtual Dir called Woof on the LocalHost server and points and the path C:\MyWebProjects\Woof on the hard drive.

Hope this helps.

Woka

----------


## nizmo

That code is exactly what i was after, and it works fine on the primary domain controller machine - but when i try and run it on our new web server i get the error

"The RPC server is unavailable"

On this line;
_Dim CanCreate As Boolean = Not IISSchema.Properties("Syntax").Value.ToString.ToUpper() = "BOOLEAN"_


The RPC service IS started on the server in question.
Its driving me crazy, you gotta help me!

----------


## Wokawidget

I tried Googling it for you, but there are sooooo many different reasons for it not working....from having a virus on the PC to renaming your computer after IIS has been installed.

Here's the search link I used:

http://www.google.com/search?hl=en&l...ble%22+and+IIS

It's 2am here, and I need Zzzzz for an early start.

Let us know if you find the solution. If you haven't posted back here by tomorrow morning, 10am-ish GMT, then I'll look through all those search results and see what I come up with.

Woof

----------


## nizmo

Hey

Thanks heaps for replying, and yeah google returned too many possibilities, but we figured it out in the end. It was the windows firewall that was preventing me from doing a rpc to the sever, probably because of the ports. Since our web server has another 2 outer layers of firewall protection, the standard windows firewall wasnt required and so we just leave it off now

Ah man you wouldnt believe how much nicer it is being able to click one button to roll out 6 new versions of our product instead of having to terminal services into the server, delete the 6 shares, share the 6 new folders, refresh the website node, right click each of the 6 new versions of the app and go to properties to apply permissions etc etc.

Thanks heaps, you're code has saved me so much time and frustration.

Oh yeah, and hopefully i replied in time so you didnt have to search through the google results - if not, then im sorry about that :/

----------


## Wokawidget

No problems...We thought the same here...made life sooo much easier for us.
I did search google and was testing stuff out yesterday, but ended up in lots of meetings and stuff then got caught up in writting some code so we could write our UI at work.

Glad it's fixed though.

What was the error and I'll add a try catch thing to my code.

Woka

----------


## uniquegodwin

Hey..
the "System.DirectoryServices.DirectoryEntry" namespace doesnt work for me..what should i do?

Thanks

----------


## uniquegodwin

I mean that namespace doesnt exist on my computer..Is there some reference you added  or something?

----------


## Wokawidget

You need to add a reference to System.DirectoryServices

Sorry, myfaul...should have mentioned that in my 1st post  :Frown: 

Woof

----------


## uniquegodwin

No no,the code is Great..  :Smilie:  Thanks

----------


## uniquegodwin

Will this work even if IIS is not installed on the users machine?

----------


## Wokawidget

errrr....no  :Confused: 

Woka

----------


## uniquegodwin

:Smilie:  but still,I really appreciate this code you've done.Its really good  :Smilie:  Thanks.

----------


## AProgrammer

The Code is really awesome but I have a necessity where I want to Create or Add or Delete Virtual Directories or Web Sites. Any Help Possible???????

----------


## san011070

Thx so much for this code. Keep it up!

I just wanna know if it needs full .NET installed or only the .NET framwork?

Sanjiv

----------


## Wokawidget

U would need the .NET framework and some form of VB.NET compiler. MS do one for free. But dunno what it's called.

Woka

----------


## skillsrhodes

Thanks so much for this code, it works great. My question is, if I want to build a virtual dir in a non-default web site, what's the best way to go about doing it?

I think I need to do something like this, right?

Dim IISAdmin As New System.DirectoryServices.DirectoryEntry("IIS://" & WebSite & "/W3SVC/_N_/Root") 

Where N is the correct number to address the web site I'm looking for. Is there a way to determine what that number is in VB?

Thanks

Adam

----------


## bw3740

I used this to find the correct site id:
---------------------------------------
Dim SiteID As Integer
Dim root As New System.DirectoryServices.DirectoryEntry("IIS://" & ServerName & "/W3SVC")

For Each e As System.DirectoryServices.DirectoryEntry In root.Children
     If e.SchemaClassName.ToUpper = "IISWEBSERVER" AndAlso CStr(e.Invoke("Get", "ServerComment")).ToUpper = SiteName.ToUpper Then
          SiteID = Convert.ToInt32(e.Name)
          Exit For
     End If
Next

Dim IISAdmin As New System.DirectoryServices.DirectoryEntry("IIS://" & ServerName & "/W3SVC/" & SiteID & "/Root")

----------


## chipslvsv

Hello I have used this code but when I try to Create de Virtual Directory I get a System.UnauthorizedAccessException: Access is denied error saying something about the ASP.NET anonymous use required permissions etc.

I'm running an IIS 5.1 Server on Windows 2000 Server.

I don't know where is suposed to give the permissions to the user. Maybe someone can help me Thaks..

----------


## duynnh

Hi All!
I am using this code but i have an Error: "System.UnauthorizedAccessException: Access is denied", help me!
Regards,

----------


## Wokawidget

Probably because your accounts don't have permissions. Pass a valid username and password to the:

VB Code:
Dim IISSchema As New System.DirectoryServices.DirectoryEntry("IIS://" & WebSite & "/Schema/AppIsolated", "Administrator", "Woka123")
I am assuming it's that line of code.

Woka

----------


## txghia58

Any idea of how to set the .Net version that the virtual directory is using?

----------


## myabhishek

> Hi All!
> I am using this code but i have an Error: "System.UnauthorizedAccessException: Access is denied", help me!
> Regards,


-------------------------------

When i am trying to create a virtual directory using the above code - i get the following error

System.UnauthorizedAccessException was unhandled by user code
  Message="Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))"
  Source="System.DirectoryServices"
  StackTrace:
       at _Default.CreateVirtualDir(String WebSite, String AppName, String Path) in c:\inetpub\wwwroot\VirtualWebSite\Default.aspx.vb:line 84
       at _Default.btnCreateDirectory_Click(Object sender, EventArgs e) in c:\inetpub\wwwroot\VirtualWebSite\Default.aspx.vb:line 9
       at System.Web.UI.WebControls.Button.OnClick(EventArgs e)
       at System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument)
       at System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)
       at System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)
       at System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
       at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)


--------------

Please help

----------


## Wokawidget

Can you post your code...

Woka

----------


## beepmaster

I tried to implement this code and can get it to work on one of my Web sites on my development IIS server.  However, the only one it works on is the local host.  I am actually developing 7 Web sites off of my server and need to create the virtual directories on a different Web site.  How do I point the virtual directory to the right Web site?

Also, are there any security risks with having this function available over the Web that I should be concerned about?  (Stupid question?)

----------


## Wokawidget

Not sure how to do it remotely.

There are security risks with anything...but I don't think it can be done over the web, and if they could, then they could also login to your svr because they would need the username and password.

Woof

----------


## beepmaster

Also, is it possible to (instead of specifying a file location) to specify a redirect page?

----------


## wizbay

Woka, I read your article about creating virtual directory in vbforum.com.

This is an amazing code I was looking for long time. I am developing with visual studio 2005 on windows xp pro system.

This code works if I build it using development server in visual studio 2005 (Ctrl + F5) but it would not work on win xp's iis server. It occurs "System.UnauthorizedAccessException: Access is denied".

I tried your suggestion
(Dim IISSchema As New System.DirectoryServices.DirectoryEntry("IIS://" & WebSite & "/Schema/AppIsolated", "Administrator", "Woka123"))
and others, too but nothing works.

Do you have any other suggestions? I get this working on my desktop, can I make this working on my webhosting account? (shared hosting)

If this is not working, can you tell me how to make a folder an application root in vb.net?

----------


## Wokawidget

Have you used the servers admin and password?

Woka

----------


## wizbay

Yes I used the username and password.

You mean the username and password I use to log on to Windows xp right?

My account has admin's permission.

----------


## wizbay

Is this code wokring for IIS 6.0 and higher only?

5.1 or earlier version doesn't work?

----------


## Wokawidget

only tested on 6 I am afraid  :Frown: 

WOka

----------


## wizbay

Okay. I finally installed windows 2003 standard with IIS 6.0.
I used default created web.config and had directoryservices referenced.

But unfortunately, I still have exactly same error. I will be more detail this time Woka.

Here's link to my ftp server for my source codes. http://wizbay.com/woka.zip

Please don't give me up~

*Default.aspx*

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" Debug="true" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>

        <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>

    </div>
    </form>
</body>
</html>

*Default.aspx.vb*
Imports Microsoft.VisualBasic
Imports System
Imports System.Data
Imports System.Configuration
Imports System.Collections
Imports System.Web
Imports System.Web.Security
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports System.Web.UI.WebControls.WebParts
Imports System.Web.UI.HtmlControls
Imports System.Data.SqlClient
Imports System.DirectoryServices

Partial Class _Default
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        If Not IsPostBack Then

            CreateVirtualDir("localhost", "test", "e:\test")

        End If

    End Sub
    Private Sub CreateVirtualDir(ByVal WebSite As String, ByVal AppName As String, ByVal Path As String)

        'Dim IISSchema As New System.DirectoryServices.DirectoryEntry("IIS://" & WebSite & "/Schema/AppIsolated")
        Dim IISSchema As New System.DirectoryServices.DirectoryEntry("IIS://" & WebSite & "/Schema/AppIsolated", "Administrator", "1212")

        Dim CanCreate As Boolean = Not IISSchema.Properties("Syntax").Value.ToString.ToUpper() = "BOOLEAN"
        IISSchema.Dispose()

        If CanCreate Then
            Dim PathCreated As Boolean

            Try
                Dim IISAdmin As New System.DirectoryServices.DirectoryEntry("IIS://" & WebSite & "/W3SVC/1/Root")

                'make sure folder exists
                If Not System.IO.Directory.Exists(Path) Then
                    System.IO.Directory.CreateDirectory(Path)
                    PathCreated = True
                End If

                'If the virtual directory already exists then delete it
                For Each VD As System.DirectoryServices.DirectoryEntry In IISAdmin.Children
                    If VD.Name = AppName Then
                        IISAdmin.Invoke("Delete", New String() {VD.SchemaClassName, AppName})
                        IISAdmin.CommitChanges()
                        Exit For
                    End If
                Next VD

                'Create and setup new virtual directory
                Dim VDir As System.DirectoryServices.DirectoryEntry = 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 Ex As Exception
                If PathCreated Then
                    System.IO.Directory.Delete(Path)
                End If
                Throw Ex
            End Try
        End If
    End Sub

End Class


*Error on http://localhost/Default.aspx*
Access denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED)) 
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 
Exception Details: System.UnauthorizedAccessException.

*Source Error:*  
An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below. 

*Stack Trace:*  
[UnauthorizedAccessException: Access denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))]
   _Default.CreateVirtualDir(String WebSite, String AppName, String Path) +1238
   _Default.Page_Load(Object sender, EventArgs e) +43
   System.Web.UI.Control.OnLoad(EventArgs e) +99
   System.Web.UI.Control.LoadRecursive() +47
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1061

----------


## beepmaster

All, I was finally able to spend some time to answer my question about how to specify which Web site on the IIS server I wanted to create the Virtual Directory for.  In the following line of code, the "1" is the identifier for which Web site you are referring to.  You can get this number by left clicking on the Website folder.  To the right, the screen should now list all of your Web sites and there is an identifier column.  That is the value that should be there. 

 Dim IISAdmin As New System.DirectoryServices.DirectoryEntry("IIS://" & WebSite & "/W3SVC/*1*/Root")

Hope that makes sense.

----------


## beepmaster

I was getting this error, but I think I have solved it.  I'm not sure it's the best solution, because apparently it opens up some security issues, but it has to do with the application pool you are using for the Web site.  If you go to the Web site's application pool's properties and select the identity tag you will see a drop down box next to the "predefined" radio button.  Select "Local system" and click apply.

If all your code is set up correctly, you should be all set.  I don't know what (if any) security risks are opened.  Microsoft just throws up a warning when you do this.  Let me know if you find anything on that, I'd be very interested to hear what they have to say.




> Okay. I finally installed windows 2003 standard with IIS 6.0.
> I used default created web.config and had directoryservices referenced.
> 
> But unfortunately, I still have exactly same error. I will be more detail this time Woka.
> 
> Here's link to my ftp server for my source codes. http://wizbay.com/woka.zip
> 
> Please don't give me up~
> 
> ...

----------


## Passgad

The original code create a Web application under wwwroot.

Someone knows how to create juste a virtual directory (not a web application) with the Browse option ?

For an example, I've created a virtual dir from the wizard in IIS 6 :




What is the code for this ?

Thanks,
Pass

----------


## Wokawidget

Your screen shot isnt showing...but I think this may do what you want:


```
Private Sub CreateVirtualDir(ByVal WebSite As String, ByVal AppName As String, ByVal NewDirName As String, ByVal Path As String)

        Dim IISSchema As New System.DirectoryServices.DirectoryEntry("IIS://" & WebSite & "/Schema/AppIsolated")
        Dim CanCreate As Boolean = Not IISSchema.Properties("Syntax").Value.ToString.ToUpper() = "BOOLEAN"
        IISSchema.Dispose()

        If CanCreate Then
            Dim PathCreated As Boolean

            Try
                Dim IISAdmin As New System.DirectoryServices.DirectoryEntry("IIS://" & WebSite & "/W3SVC/1/Root")

                'make sure folder exists
                If Not System.IO.Directory.Exists(Path) Then
                    System.IO.Directory.CreateDirectory(Path)
                    PathCreated = True
                End If

                'If the virtual directory already exists
                Dim appFound As Boolean = False

                For Each VD As System.DirectoryServices.DirectoryEntry In IISAdmin.Children
                    If VD.Name = AppName Then
                        appFound = True

                        'Create and setup new virtual directory
                        Dim VDir As System.DirectoryServices.DirectoryEntry = VD.Children.Add(NewDirName, "IIsWebVirtualDir")
                        VDir.Properties("Path").Item(0) = Path

                        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.CommitChanges()

                        Exit For
                    End If
                Next VD

                If Not appFound Then
                    Throw New Exception("Web Application not found.")
                End If

            Catch Ex As Exception
                If PathCreated Then
                    System.IO.Directory.Delete(Path)
                End If
                Throw Ex
            End Try
        End If
    End Sub
```

Then call using:


```
CreateVirtualDir("LocalHost", "Woof", "Growl", "C:\MyWebProjects\Woof\Growl")
```

I already have a virtual directory called Woof under the default web site.

Woka

----------


## h.annous

Wonderful, thank you.

I was wondering if it is possible to edit the Directory Security (Anonymous access and authentication control) in order to make sure only basic authentication and Integrated Windows security are checked for example.

----------


## h.annous

I figured it out myself, thanks.
AuthNTLM for Integrated Windows.
AuthBasic for basic authentication.

----------


## Wokawidget

You beat me to it, I was just this second about to post that  :Big Grin: 

Woof

----------


## h.annous

:-)
What is the way to get the names of all the properties?

----------


## Wokawidget

Just loop through all the props out output the name.

woof

----------


## h.annous

I'm a little new to VB.NET.
The properties collection is of type PropertyCollection.
What's the type of each of the elements (the one to use in the for each loop)?

----------


## RobM

I think this will give you what you need.


link

Thanks for the code.  It was exactly what I was looking for.

----------


## jignesh_1508

i dopied source code for creating virtual directory in IIS of local server . but if i want to Create in IIS of another PC using IP adderess ,what should i change in that code??? anyone plssss  i m new user ...

----------


## h.annous

Instead of LocalHost pass the IP address.

----------


## jignesh_1508

hi,i can create virtual directory in IIS .but i want to create a New website i.e.www.testing.com. how can i create using vb.net any idea plz plz tell me.....

thanx in Advance

----------


## Wokawidget

Take a look at:

http://forums.asp.net/p/396812/857211.aspx#857211

Woka

----------


## jignesh_1508

thanks woka.
i want ur suggestion.
what should i use in my project .
MYSQL or microsoft's SQL server as backend  in .NET????
if i want to use MYSQL as backend which technology should i prefer?
apache/PHP or .NET??

----------


## Wokawidget

I would have to always say IIS, .NET and MS SQL Svr.

----------


## Wokawidget

...then again...it completely depends on what project you are writting. MS SQL Svr my be complete overkill for very very small projects.

Woka

----------


## jignesh_1508

hi, woka 
i m creating job searching website.
jobseekers can resume their CV,search for vaccancies..etc..etc..
it is very big Project..

if i use My SQL as a backend ,will it create any problem(i.e.like speed slow,efficiency etc.)?? 

i don't want to use MS SQL Server as a backend.

----------


## Wokawidget

I am not that familiar with My SQL I am afraid.
Why don't you want to use SQL Svr?

Woka

----------


## jignesh_1508

hi, woka 

i m working on the project as per the client requirement. my client wants to use my sql as a backend. do u have any idea plssss??

----------


## Wokawidget

Ideas on what?
If your client wants My SQL then use My SQL...I wudn't. I would use SQL Svr...MSDE 2000 or MSDE 2005 Express.
My SQL won't cause you any issues I don't think, it's just not as good as SQL Server.

You want to be asking these kind of questions in the DB section...you'll get a bigger response.

Woka

----------


## blacksheep1980

Hi Chaps,

I'm new to this site and registered purely on the back of this excellent piece of work to create virtual directories in VB.NET.  

But, I'm having a problem with the RPC issue.

I can't just turn the firewall off (company policy I'm afraid!  :Ehh:  ).

Is there any further developments with getting round this RPC issue?  Are there any exceptions I should set within Windows Firewall to allow this IIS change from the application I've created?

For further information, the error I receive is this:-

System.Runtime.InteropServices.COMExeption occured in system.directoryservices.dll

Additional information: The RPC server is unavailable.

This occurs on the following line within the code:

Dim CanCreate as Boolean = Not IISSchema.Properties("Syntax").Value.ToString.ToUpper() = "Boolean"

Any help would be really appreciated!

Thanks

----------


## Wokawidget

Hi and welcome  :wave: 

This is a tricky one. It can be caused by many many things. Firewalls just being one of them
Does your company use a 3rd party firewall? If so, turning off the windows firewall may fix the issue.
Not exactly sure what ports need to be open I am afraid  :Frown: 

If you run this on the web server itself do you get the errors?

Woka

----------


## blacksheep1980

I'm not sure exactly how their firewall is set up.  It's quite a big company (British Telecom!!! lol).  

I'm writing a system to automate the installation of a web application we have developed.  Part of the automation is to manipulate IIS and create the virtual directories.

The script has been ran from the web server itself (i.e. localhost) but still this RPC error is returned.

I will do some investigating myself and if I find a solution I'll post it.  I'm not holding my breath though!   :Roll Eyes (Sarcastic):  

Cheers

----------


## Wokawidget

hehe. BT. I was working there not so long ago and they have some of the most locked down environments I have ever seen. 
Have you heard of HMC, Hosted Message Collaboration? or MPS, Microsoft Provisioning System?
I did some overview dev training on these products for BT a few months ago.
MPS was designed to provision resources in your environment...any resources.
Have a word with ppl at BT and see if they have heard of HMC....if so, use that  :Big Grin: 

So, you also got the error on the local IIS box?  :Frown:  doesn't sound good.
Does the local IIS box have windows firewall running?

Woka

----------


## larock

In order for the App Name to be populated correctly, you have to swap these two lines
VDir.CommitChanges()   
VDir.Invoke("AppCreate", 1)

Should be 
VDir.Invoke("AppCreate", 1)
VDir.CommitChanges()  

If you don't swap the two lines, the AppFriendlyName will appear blank when you look at the properties of your Virtual Directoy.

Other than that, excellent code.  Thanks

----------


## Wokawidget

Good bug spot. Thanks  :Big Grin:

----------


## sadame

Hi Woka..
I only registered to this site to say thank you for the post. Two years later and it's still working and helping people like me. Thank you to all of you. I rewrite the code in c# but for some reason I couldn't figure out it's not working. So I decided to write it in VB.Net and use it as a DLL, which is working perfectly. Weird isn't it?

---
Sergio

----------


## mark@markkiessling.c

I was wondering if anyone knows how to add an IIS 6 web site with Host Header?

----------


## Chibikishi

Hi Woka! Thanks for letting us use the code I really appreciate it.  The code seemed to be working when I was running it through visual studios, but after we uploaded onto the server I am getting the RPC unavailable error.  I'm not sure what to do to fix this, we checked the firewall and are logging in as administrator so I'm not sure what else can be the problem.  Do you have any ideas?  Here is the stack trace error that follows:
[COMException (0x800706ba): The RPC server is unavailable.
]
   System.DirectoryServices.DirectoryEntry.Bind(Boolean throwIfFail) +377678
   System.DirectoryServices.DirectoryEntry.Bind() +36
   System.DirectoryServices.DirectoryEntry.get_AdsObject() +31
   System.DirectoryServices.PropertyValueCollection.PopulateList() +26
   System.DirectoryServices.PropertyValueCollection..ctor(DirectoryEntry entry, String propertyName) +49
   System.DirectoryServices.PropertyCollection.get_Item(String propertyName) +150
   MFC.WebApp.SecureAuth.WebAdminWorkflow.CreateVirtualDir(String WebSite, String AppName, String Path) +192
   MFC.WebApp.SecureAuth.WebAdminWorkflow.AddInstanceButton_Click(Object sender, EventArgs e) +239
   System.Web.UI.WebControls.Button.OnClick(EventArgs e) +111
   System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +110
   System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
   System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
   System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +36
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1565

----------


## Chibikishi

Nevermind I found what was wrong.  I was hardcoding the name for my box while I was coding instead of putting the localhost name.  Everything seems to be working fine now

----------


## tarzan_055

Hi mate
I dont know how old is this post. the code you wrote is great and works for me like charm the only problem is that i want to add the physical path credentials to the virtual directory with your code but i couldnt find anywhere what property should i use. 
greatest regards

----------

