para descubrir la ruta física de un sitio web desde una aplicación independiente que puede hacer lo siguiente:
// If IIS7
// Add reference to Microsoft.Web.Administration in
// C:\windows\system32\inetsrv
using Microsoft.Web.Administration;
...
int iisNumber = 2;
using(ServerManager serverManager = new ServerManager())
{
var site = serverManager.Sites.Where(s => s.Id == iisNumber).Single();
var applicationRoot =
site.Applications.Where(a => a.Path == "/").Single();
var virtualRoot =
applicationRoot.VirtualDirectories.Where(v => v.Path == "/").Single();
Console.WriteLine(virtualRoot.PhysicalPath);
}
Si está utilizando IIS 6 (o la capa de compatibilidad de administración de IIS6 a IIS7)
// If IIS6
// Add reference to System.DirectoryServices on .NET add ref tab
using System.DirectoryServices;
...
int iisNumber = 2;
string metabasePath = String.Format("IIS://Localhost/W3SVC/{0}/root", iisNumber);
using(DirectoryEntry de = new DirectoryEntry(metabasePath))
{
Console.WriteLine(de.Properties["Path"].Value);
}
Ambos ejemplos demuestran cómo descubrir la ruta a la raíz de un sitio web .
Para descubrir la ruta a un directorio virtual, necesita modificar las rutas según sea necesario.
¿Está tratando de hacer esto desde la propia aplicación, es decir, ASP.NET, o algún tipo de aplicación independiente? – LukeH
desde una aplicación independiente – Agzam
es mejor que haga preguntas correctamente con toda la información y marque su actualización en negrita como lo hice en mi respuesta –