Create Virtual Directory in IIS using VB.NET-VBForums
Page 1 of 2 12 LastLast
Results 1 to 40 of 65

Thread: Create Virtual Directory in IIS using VB.NET

  1. #1

    Thread Starter
    Super Moderator Wokawidget's Avatar
    Join Date
    Nov 2001
    Location
    Headingly Occupation: Classified
    Posts
    9,633

    Create Virtual Directory in IIS using VB.NET

    You need to add a reference into your app for System.DirectoryServices
    Then use:
    VB Code:
    1. Private Sub CreateVirtualDir(ByVal WebSite As String, ByVal AppName As String, ByVal Path As String)
    2.  
    3.         Dim IISSchema As New System.DirectoryServices.DirectoryEntry("IIS://" & WebSite & "/Schema/AppIsolated")
    4.         Dim CanCreate As Boolean = Not IISSchema.Properties("Syntax").Value.ToString.ToUpper() = "BOOLEAN"
    5.         IISSchema.Dispose()
    6.  
    7.         If CanCreate Then
    8.             Dim PathCreated As Boolean
    9.  
    10.             Try
    11.                 Dim IISAdmin As New System.DirectoryServices.DirectoryEntry("IIS://" & WebSite & "/W3SVC/1/Root")
    12.  
    13.                 'make sure folder exists
    14.                 If Not System.IO.Directory.Exists(Path) Then
    15.                     System.IO.Directory.CreateDirectory(Path)
    16.                     PathCreated = True
    17.                 End If
    18.  
    19.                 'If the virtual directory already exists then delete it
    20.                 For Each VD As System.DirectoryServices.DirectoryEntry In IISAdmin.Children
    21.                     If VD.Name = AppName Then
    22.                         IISAdmin.Invoke("Delete", New String() {VD.SchemaClassName, AppName})
    23.                         IISAdmin.CommitChanges()
    24.                         Exit For
    25.                     End If
    26.                 Next VD
    27.  
    28.                 'Create and setup new virtual directory
    29.                 Dim VDir As System.DirectoryServices.DirectoryEntry = IISAdmin.Children.Add(AppName, "IIsWebVirtualDir")
    30.                 VDir.Properties("Path").Item(0) = Path
    31.                 VDir.Properties("AppFriendlyName").Item(0) = AppName
    32.                 VDir.Properties("EnableDirBrowsing").Item(0) = False
    33.                 VDir.Properties("AccessRead").Item(0) = True
    34.                 VDir.Properties("AccessExecute").Item(0) = True
    35.                 VDir.Properties("AccessWrite").Item(0) = False
    36.                 VDir.Properties("AccessScript").Item(0) = True
    37.                 VDir.Properties("AuthNTLM").Item(0) = True
    38.                 VDir.Properties("EnableDefaultDoc").Item(0) = True
    39.                 VDir.Properties("DefaultDoc").Item(0) = "default.htm,default.aspx,default.asp"
    40.                 VDir.Properties("AspEnableParentPaths").Item(0) = True
    41.                 VDir.CommitChanges()
    42.  
    43.                 'the following are acceptable params
    44.                 'INPROC = 0
    45.                 'OUTPROC = 1
    46.                 'POOLED = 2
    47.                 VDir.Invoke("AppCreate", 1)
    48.  
    49.             Catch Ex As Exception
    50.                 If PathCreated Then
    51.                     System.IO.Directory.Delete(Path)
    52.                 End If
    53.                 Throw Ex
    54.             End Try
    55.         End If
    56.     End Sub
    This is used in the following way:
    VB Code:
    1. 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

  2. #2
    New Member
    Join Date
    Jul 2005
    Posts
    5

    Re: Create Virtual Directory in IIS using VB.NET

    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!

  3. #3

    Thread Starter
    Super Moderator Wokawidget's Avatar
    Join Date
    Nov 2001
    Location
    Headingly Occupation: Classified
    Posts
    9,633

    Re: Create Virtual Directory in IIS using VB.NET

    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

  4. #4
    New Member
    Join Date
    Jul 2005
    Posts
    5

    Re: Create Virtual Directory in IIS using VB.NET

    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 :/
    Last edited by nizmo; Jul 21st, 2005 at 10:57 PM.

  5. #5

    Thread Starter
    Super Moderator Wokawidget's Avatar
    Join Date
    Nov 2001
    Location
    Headingly Occupation: Classified
    Posts
    9,633

    Re: Create Virtual Directory in IIS using VB.NET

    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

  6. #6
    Fanatic Member uniquegodwin's Avatar
    Join Date
    Jul 2005
    Location
    Chennai,India
    Posts
    693

    Re: Create Virtual Directory in IIS using VB.NET

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

    Thanks
    Godwin

    Help someone else with what someone helped you!

  7. #7
    Fanatic Member uniquegodwin's Avatar
    Join Date
    Jul 2005
    Location
    Chennai,India
    Posts
    693

    Re: Create Virtual Directory in IIS using VB.NET

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

    Help someone else with what someone helped you!

  8. #8

  9. #9
    Fanatic Member uniquegodwin's Avatar
    Join Date
    Jul 2005
    Location
    Chennai,India
    Posts
    693

    Re: Create Virtual Directory in IIS using VB.NET

    No no,the code is Great.. Thanks
    Godwin

    Help someone else with what someone helped you!

  10. #10
    Fanatic Member uniquegodwin's Avatar
    Join Date
    Jul 2005
    Location
    Chennai,India
    Posts
    693

    Re: Create Virtual Directory in IIS using VB.NET

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

    Help someone else with what someone helped you!

  11. #11

  12. #12
    Fanatic Member uniquegodwin's Avatar
    Join Date
    Jul 2005
    Location
    Chennai,India
    Posts
    693

    Re: Create Virtual Directory in IIS using VB.NET

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

    Help someone else with what someone helped you!

  13. #13
    New Member
    Join Date
    Oct 2005
    Posts
    1

    Re: Create Virtual Directory in IIS using VB.NET

    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???????

  14. #14
    New Member
    Join Date
    Nov 2005
    Posts
    1

    Re: Create Virtual Directory in IIS using VB.NET

    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

  15. #15

  16. #16
    New Member
    Join Date
    Dec 2005
    Posts
    1

    Re: Create Virtual Directory in IIS using VB.NET

    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

  17. #17
    New Member
    Join Date
    Dec 2005
    Posts
    1

    Re: Create Virtual Directory in IIS using VB.NET

    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")

  18. #18
    New Member
    Join Date
    Dec 2005
    Posts
    1

    Re: Create Virtual Directory in IIS using VB.NET

    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..

  19. #19
    New Member
    Join Date
    Mar 2006
    Posts
    3

    Unhappy Re: Create Virtual Directory in IIS using VB.NET

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

  20. #20

    Thread Starter
    Super Moderator Wokawidget's Avatar
    Join Date
    Nov 2001
    Location
    Headingly Occupation: Classified
    Posts
    9,633

    Re: Create Virtual Directory in IIS using VB.NET

    Probably because your accounts don't have permissions. Pass a valid username and password to the:
    VB Code:
    1. Dim IISSchema As New System.DirectoryServices.DirectoryEntry("IIS://" & WebSite & "/Schema/AppIsolated", "Administrator", "Woka123")
    I am assuming it's that line of code.

    Woka

  21. #21
    New Member
    Join Date
    Aug 2006
    Posts
    1

    Re: Create Virtual Directory in IIS using VB.NET

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

  22. #22
    New Member
    Join Date
    Aug 2006
    Posts
    1

    Re: Create Virtual Directory in IIS using VB.NET

    Quote Originally Posted by duynnh
    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

  23. #23

  24. #24
    New Member beepmaster's Avatar
    Join Date
    Aug 2006
    Location
    Illinois
    Posts
    6

    Re: Create Virtual Directory in IIS using VB.NET

    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?)
    Last edited by beepmaster; Aug 23rd, 2006 at 10:45 AM.

  25. #25

    Thread Starter
    Super Moderator Wokawidget's Avatar
    Join Date
    Nov 2001
    Location
    Headingly Occupation: Classified
    Posts
    9,633

    Re: Create Virtual Directory in IIS using VB.NET

    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

  26. #26
    New Member beepmaster's Avatar
    Join Date
    Aug 2006
    Location
    Illinois
    Posts
    6

    Re: Create Virtual Directory in IIS using VB.NET

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

  27. #27
    New Member
    Join Date
    Sep 2006
    Posts
    4

    Thumbs up Re: Create Virtual Directory in IIS using VB.NET

    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?

  28. #28

  29. #29
    New Member
    Join Date
    Sep 2006
    Posts
    4

    Re: Create Virtual Directory in IIS using VB.NET

    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.

  30. #30
    New Member
    Join Date
    Sep 2006
    Posts
    4

    Re: Create Virtual Directory in IIS using VB.NET

    Is this code wokring for IIS 6.0 and higher only?

    5.1 or earlier version doesn't work?

  31. #31

  32. #32
    New Member
    Join Date
    Sep 2006
    Posts
    4

    Re: Create Virtual Directory in IIS using VB.NET

    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
    Last edited by wizbay; Sep 12th, 2006 at 11:45 PM.

  33. #33
    New Member beepmaster's Avatar
    Join Date
    Aug 2006
    Location
    Illinois
    Posts
    6

    Re: Create Virtual Directory in IIS using VB.NET

    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.

  34. #34
    New Member beepmaster's Avatar
    Join Date
    Aug 2006
    Location
    Illinois
    Posts
    6

    Re: Create Virtual Directory in IIS using VB.NET

    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.

    Quote Originally Posted by 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

  35. #35
    New Member
    Join Date
    Dec 2006
    Posts
    6

    Re: Create Virtual Directory in IIS using VB.NET

    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

  36. #36

    Thread Starter
    Super Moderator Wokawidget's Avatar
    Join Date
    Nov 2001
    Location
    Headingly Occupation: Classified
    Posts
    9,633

    Re: Create Virtual Directory in IIS using VB.NET

    Your screen shot isnt showing...but I think this may do what you want:
    Code:
    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:
    Code:
    CreateVirtualDir("LocalHost", "Woof", "Growl", "C:\MyWebProjects\Woof\Growl")
    I already have a virtual directory called Woof under the default web site.

    Woka

  37. #37
    New Member h.annous's Avatar
    Join Date
    Apr 2007
    Location
    Lebanon
    Posts
    5

    Re: Create Virtual Directory in IIS using VB.NET

    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.

  38. #38
    New Member h.annous's Avatar
    Join Date
    Apr 2007
    Location
    Lebanon
    Posts
    5

    Re: Create Virtual Directory in IIS using VB.NET

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

  39. #39

  40. #40
    New Member h.annous's Avatar
    Join Date
    Apr 2007
    Location
    Lebanon
    Posts
    5

    Question Re: Create Virtual Directory in IIS using VB.NET

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

Page 1 of 2 12 LastLast

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  



Featured


Click Here to Expand Forum to Full Width

Survey posted by VBForums.