2011-03-24 23 views
5

estoy tratando de utilizar¿Cómo puedo obtener una lista de los sitios web en IIS desde una página ASPX usando C#?

DirectoryEntry root = new DirectoryEntry("IIS://localhost/W3SVC/1/Root"); 
    foreach (DirectoryEntry de in root.Children) 
    { 
    } 

pero me siguen dando

[COMException (0x80005000): Unknown error (0x80005000)] 
    System.DirectoryServices.DirectoryEntry.Bind(Boolean throwIfFail) +557 
    System.DirectoryServices.DirectoryEntry.Bind() +44 
    System.DirectoryServices.DirectoryEntry.get_IsContainer() +42 
    System.DirectoryServices.ChildEnumerator..ctor(DirectoryEntry container) +36 
    System.DirectoryServices.DirectoryEntries.GetEnumerator() +36 
    IISVdir.List(String RootWeb) in c:\Development\Testing\App_Code\IISVdir.cs:116 
    _Default.Page_Load(Object sender, EventArgs e) in c:\Development\Testing\Default.aspx.cs:11 
    System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +25 
    System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +42 
    System.Web.UI.Control.OnLoad(EventArgs e) +132 
    System.Web.UI.Control.LoadRecursive() +66 
    System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +2428 
+0

Probablemente este duplicado tiene otra explicación común - http://stackoverflow.com/questions/3782058/using-directoryentry-to-enumerate-iis-configuration- data-getting-comexception –

Respuesta

0

No estoy muy seguro de lo que es el error, pero a una adivina que podría ser problema de instalación o permisos.

Por cuestiones de tipo de instalación:

http://blogs.msdn.com/b/jpsanders/archive/2009/05/13/iis-7-adsi-error-system-runtime-interopservices-comexception-0x80005000-unknown-error-0x80005000.aspx

Por cuestiones de tipo permisos añadir algo a config como:

<identity impersonate="true" userName="AdminUserName" password="password" /> 

o cambiar el contexto de usuario que el grupo de aplicaciones se ejecuta bajo a uno que tiene los derechos de administrador local podrían funcionar.

Además, los elementos secundarios de IIS: // localhost/W3SVC/1/Root serán directorios virtuales o carpetas. Los sitios web serían IIS: // localhost/W3SVC.

2

En Windows 7/8 ir Panel de control Programa/y Características/Encienda las características de Windows o desactivar, y verificación de todos los elementos de: Herramientas de Manejo del Web, (que incluye de: Gestión de IIS Servicio, II 6 Managment Compatibility).

Y puede utilizar el código:

public static void OpenWebsite(string name) 
{ 
    DirectoryEntry Services = new DirectoryEntry("IIS://localhost/W3SVC"); 
    IEnumerator ie = Services.Children.GetEnumerator(); 
    DirectoryEntry Server = null; 
    string nombre = ""; 

    while (ie.MoveNext()) 
    { 
     Server = (DirectoryEntry)ie.Current; 
     if (Server.SchemaClassName == IIsWebServer) 
     { 
      nombre = Server.Properties["ServerComment"][0].ToString(); 
      if (nombre == name) 
      { 
       break;     
      } 
     } 
    } 

    Console.Write(nombre); 
} 
Cuestiones relacionadas