2012-02-27 9 views
7

Estoy intentando determinar la ubicación de la aplicación ASP.NET en el archivo de registro IIS. Intenté WMI, pero no pude encontrarlo. ¿Alguna sugerencia?Recuperación mediante programación de la ubicación del archivo de registro IIS en una aplicación ASP.NET

Nota: Deseo poder recuperar la ubicación mediante programación; dentro de mi aplicación para un uso posterior. Editar: Aquí está mi código: Esto funciona, pero no me da la ubicación del directorio físico real de los registros. Entonces esto es básicamente inútil.

ManagementPath p2=new ManagementPath("IIsLogModule.Name='logging/Microsoft IIS Log File Format'"); 
ManagementObject log = new ManagementObject(scope, p2, objectGet); 
log.Get(); 
logPath.Text = log["__PATH"].ToString(); 
+0

muestra tu código ?? lo que has hecho hasta ahora, para que podamos ayudar con la varita mágica: D –

+0

Creo que intentas hacer tu vida más difícil. ¿Dónde está este archivo es algo que usted controla, y sabe, por qué ganó encontrarlos mirando algunos archivos de configuración que probablemente no tienen acceso a ellos? – Aristos

+0

Edité mi pregunta. Pero no creo que te ayude, ya que este bloque de código muestra algo diferente de lo que necesito. Gracias por la rápida respuesta. – Slethron

Respuesta

5

En IIS7 podría utilizar ensamblaje Microsoft.Web.Administration, Site clase tiene una propiedad denominada LogFile, se puede obtener información sobre varios archivo de registro para el sitio, por ejemplo directorio de archivos de registro se pueden obtener con este código:

ServerManager manager = new ServerManager(); 
    Site mySite = manager.Sites["SiteName"]; 
    Response.Write("Log file directory : " + mySite.LogFile.Directory + "\\W3svc" + mySite.Id.ToString()); 

no me gusta mucho esa parte codificada con el prefijo del directorio para el sitio, pero no se encontró ninguna otra manera mejor

0

Usted debe poder utilizar ADSI (o WMI) para hacer eso - navegue por la metabase de IIS y busque 'L Propiedad ogFileDirectory 'para el nodo del sitio web. Por ejemplo,

var root = new DirectoryEntry(@"IIS://localhost/W3SVC"); 
var sites = root.Children; 
foreach(DirectoryEntry site in sites) { 
    var name = site.Properties["ServerComment"][0]; 
    var logFile = site.Properties["LogFileDirectory"][0]; 
} 

de responsabilidad: Código No comprobado

Ver this powershell example utilizando idea similar.

Cuestiones relacionadas