-
Jun 30th, 2005, 03:41 AM
#1
Create Virtual Directory in IIS using VB.NET
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
Last edited by Wokawidget; Aug 24th, 2005 at 03:40 AM.
-
Jul 19th, 2005, 06:34 PM
#2
New Member
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!
-
Jul 19th, 2005, 07:56 PM
#3
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
-
Jul 21st, 2005, 10:53 PM
#4
New Member
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.
-
Jul 22nd, 2005, 03:50 AM
#5
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
-
Aug 23rd, 2005, 10:02 PM
#6
Fanatic Member
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!
-
Aug 23rd, 2005, 10:04 PM
#7
Fanatic Member
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!
-
Aug 24th, 2005, 03:37 AM
#8
Re: Create Virtual Directory in IIS using VB.NET
You need to add a reference to System.DirectoryServices
Sorry, myfaul...should have mentioned that in my 1st post
Woof
-
Aug 24th, 2005, 04:26 AM
#9
-
Aug 24th, 2005, 04:30 AM
#10
Fanatic Member
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!
-
Aug 24th, 2005, 05:59 AM
#11
Re: Create Virtual Directory in IIS using VB.NET
errrr....no
Woka
-
Aug 24th, 2005, 06:19 AM
#12
Fanatic Member
-
Oct 10th, 2005, 05:48 AM
#13
New Member
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???????
-
Nov 7th, 2005, 01:34 AM
#14
New Member
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
-
Nov 7th, 2005, 04:49 AM
#15
Re: Create Virtual Directory in IIS using VB.NET
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
-
Dec 2nd, 2005, 12:04 PM
#16
New Member
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
-
Dec 13th, 2005, 05:40 PM
#17
New Member
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")
-
Dec 19th, 2005, 05:49 PM
#18
New Member
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..
-
Jun 29th, 2006, 10:41 AM
#19
New Member
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,
-
Jun 29th, 2006, 12:07 PM
#20
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:
Dim IISSchema As New System.DirectoryServices.DirectoryEntry("IIS://" & WebSite & "/Schema/AppIsolated", "Administrator", "Woka123")
I am assuming it's that line of code.
Woka
-
Aug 3rd, 2006, 02:56 PM
#21
New Member
Re: Create Virtual Directory in IIS using VB.NET
Any idea of how to set the .Net version that the virtual directory is using?
-
Aug 21st, 2006, 08:22 AM
#22
New Member
Re: Create Virtual Directory in IIS using VB.NET
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
-
Aug 22nd, 2006, 05:13 AM
#23
Re: Create Virtual Directory in IIS using VB.NET
Can you post your code...
Woka
-
Aug 23rd, 2006, 10:24 AM
#24
New Member
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.
-
Aug 23rd, 2006, 08:30 PM
#25
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
-
Aug 24th, 2006, 09:40 AM
#26
New Member
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?
-
Sep 8th, 2006, 01:36 AM
#27
New Member
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?
-
Sep 8th, 2006, 04:40 AM
#28
Re: Create Virtual Directory in IIS using VB.NET
Have you used the servers admin and password?
Woka
-
Sep 8th, 2006, 04:15 PM
#29
New Member
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.
-
Sep 10th, 2006, 03:56 PM
#30
New Member
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?
-
Sep 10th, 2006, 05:20 PM
#31
Re: Create Virtual Directory in IIS using VB.NET
only tested on 6 I am afraid
WOka
-
Sep 12th, 2006, 11:42 PM
#32
New Member
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.
-
Sep 15th, 2006, 12:25 PM
#33
New Member
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.
-
Sep 29th, 2006, 09:11 AM
#34
New Member
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.
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
-
Mar 22nd, 2007, 01:22 PM
#35
New Member
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
-
Mar 23rd, 2007, 05:50 AM
#36
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
-
Apr 26th, 2007, 07:28 AM
#37
New Member
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.
-
Apr 26th, 2007, 09:06 AM
#38
New Member
Re: Create Virtual Directory in IIS using VB.NET
I figured it out myself, thanks.
AuthNTLM for Integrated Windows.
AuthBasic for basic authentication.
-
Apr 26th, 2007, 09:20 AM
#39
Re: Create Virtual Directory in IIS using VB.NET
You beat me to it, I was just this second about to post that
Woof
-
Apr 27th, 2007, 02:27 AM
#40
New Member
Re: Create Virtual Directory in IIS using VB.NET
:-)
What is the way to get the names of all the properties?
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|