IIS Attribute mit VB.Net auslesen

09/10/2008 - 20:14 von Patrick | Report spam
Hallo, ich suche eine Möglichkeit via VB.NET auf die Eigenschaften von
IIS Webseiten (Speziell um den Dateisystempfad -> z.B. c:\inetpub
\wwwroot) zuzugreifen. Über die DirectoryServices habe ich den Pfad
nicht gefunden.

Option Strict On
Option Explicit On
Imports System.DirectoryServices
Module Control
Sub Main()
Dim w3svc As New DirectoryEntry("IIS://localhost/w3svc")
Dim de As DirectoryEntry
For Each de In w3svc.Children
If de.SchemaClassName = "IIsWebServer" Then
Dim item As String
For Each item In de.Properties.PropertyNames
Dim value As Object
For Each value In de.Properties(item)
Console.WriteLine(value.ToString())
Next
Next
End If
Next
Console.ReadLine()
End Sub
End Module

Gruß Patrick
 

Lesen sie die antworten

#1 Stefan Falz [MVP]
09/10/2008 - 22:45 | Warnen spam
Hallo Patrick ohne Nachname,

"Patrick" schrieb:

Hallo, ich suche eine Möglichkeit via VB.NET auf die Eigenschaften von
IIS Webseiten (Speziell um den Dateisystempfad -> z.B. c:\inetpub
\wwwroot) zuzugreifen. Über die DirectoryServices habe ich den Pfad
nicht gefunden.



WMI wàre gegenüber ADSI hier besser geeignet. Siehe bspw.

http://www.microsoft.com/technet/sc...evb16.mspx

Ist zwar VBScript, WMI làsst sich aber auch aus .NET heraus problemlos
verwenden.

http://msdn.microsoft.com/de-de/lib...ation.aspx

Wenn Du WMI nehmen willst, solltest Du dir auf jeden Fall mal die WMI Tools
anschauen. Auslesen müsstest Du in deinem Fall die Eigenschaft "Path" des
IIsWebVirtualDirSetting Objekts für /LM/W3SVC/<SiteIndex>/ROOT/.



Dim CWebVirtualDirSettings As New ManagementClass _
( _
"\\.oot\MicrosoftIISv2",_
New ManagementPath("IIsWebVirtualDirSetting"), _
Nothing _
)

Dim WebVirtualDirSettings As ManagementObject = CWebVirtualDirSettings.CreateInstance()
... = WebVirtualDirSettings.Properties("Name").Value



(Ungetestet, da aus einem uralten Projekt zusammengeschnibbselt, den Weg sollte
es aber auch so aufzeigen :)

http://www.microsoft.com/downloads/...laylang=en

Wenn Du deine Berechtigungen entsprechend hoch setzen kannst, könntest
du ab IIS 7 auch den Microsoft.Web.Administration Namespace verwenden.
Hierfür bindest Du einen Verweis auf die Microsoft.Web.Administration.dll
ein (zu finden in C:\Windows\System32\inetsrv\) und kannst dann bspw.

Dim MyServerManager As New ServerManager()
Dim MySites As SiteCollection = MyServerManager.Sites
Dim MyApplications As ApplicationCollection = MyServerManager.Sites( <Index> ).Applications
...

die Websites, Anwendungen, Pfade, ... auslesen.

Tschau, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

Ähnliche fragen