J'ai le code
string xsltPath = System.Web.HttpContext.Current.Server.MapPath(@"App_Data") + "\\" + TransformFileName
Il retourne
C:\inetpub\wwwroot\websiteName\SERVICENAME\App_Data\FileName.xsl
Pourquoi est-ce que j'obtiens le chemin d'accès au ServiceController, SERVICENAME
? Je veux le chemin d'accès à App_Data qui est dans
C:\inetpub\wwwroot\websiteName\App_Data\FileName.xsl
Vous devez spécifier que vous souhaitez démarrer à partir de la racine virtuelle:
string xsltPath = Path.Combine(System.Web.HttpContext.Current.Server.MapPath(@"~/App_Data"), TransformFileName);
En outre, il est préférable d’utiliser Path.Combine
pour combiner des chemins plutôt que de concaténer des chaînes. Path.Combine
fera en sorte que vous ne vous retrouviez pas dans une situation avec des séparateurs à double chemin.
MODIFIER:
Pouvez-vous définir des chemins "absolus" et "relatifs" et comment ils se comparent aux chemins "physiques" et "virtuels"?
MSDN a une bonne explication sur les chemins relatifs, physiques et virtuels. Jetez un coup d'oeil là-bas.
Les réponses données jusqu’à présent correspondent à ce que vous recherchez, mais je pense que dans votre cas particulier, vous avez réellement besoin de ce qui suit:
AppDomain.CurrentDomain.GetData("DataDirectory").ToString()
Cela renverra toujours le chemin du fichier au répertoire App_Data si ce nom de répertoire change dans les versions futures de MVC ou ASP.NET.
Essayez de faire comme ceci (@"~/App_Data")
. ~/
représente le répertoire racine.