Comment obtenir le chemin qui ressemble généralement à %SystemDrive%\inetpub\wwwroot
?
Je suppose que cela a quelque chose à voir avec la classe Microsoft.Web.Administration.ServerManager
, mais je ne pouvais pas trouver un moyen.
Mise à jour: j’essaie d’obtenir le chemin de l’application autonome. Pas une application Web ASP.NET.
Pour découvrir le chemin physique d’un site Web à partir d’une application autonome, procédez comme suit:
// 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 vous utilisez IIS 6 (ou la couche de compatibilité administrateur IIS6 pour IIS7)
// If IIS6 // Add reference to System.DirectoryServices on .NET add ref tab using System.DirectoryServices; ... int iisNumber = 2; ssortingng metabasePath = Ssortingng.Format("IIS://Localhost/W3SVC/{0}/root", iisNumber); using(DirectoryEntry de = new DirectoryEntry(metabasePath)) { Console.WriteLine(de.Properties["Path"].Value); }
Ces deux exemples montrent comment découvrir le chemin d’access à la racine d’un site Web .
Pour découvrir le chemin d’access à un répertoire virtuel, vous devez modifier les chemins d’access si nécessaire.
Server.MapPath
ou
Demander les chemins d’object disponibles
Propriété RequestObject
PhysicalApplicationPath – Retourne le chemin du système de fichiers local de la racine virtuelle pour cette application. c: \ inetpub \ wwwroot \ webstore
PhysicalPath – Renvoie le chemin du système de fichiers local vers le script ou le chemin actuel. c: \ inetpub \ wwwroot \ webstore \ admin \ paths.aspx
Mises à jour
Pour accéder à iis à partir de l’application Windows, passez à travers cet article: Modification de la métabase IIS en C # (For IIs 6.0,5.0)
Server.MapPath ne fonctionne pas dans un environnement d’hébergement partagé. Dans ce cas, vous pouvez utiliser HostingEnvironment.MapPath .