web-dev-qa-db-fra.com

Obtention d'un chemin virtuel relatif à partir d'un chemin physique

Comment puis-je obtenir le chemin virtuel relatif à partir du chemin physique dans asp.net? La méthode inverse est comme ci-dessous:

Server.MapPath("Virtual Path Here");

Mais quel est l'inverse de la méthode supérieure?

38
SilverLight

Peut-être que cette question est ce que vous cherchez. Là, ils suggèrent:

String RelativePath = AbsolutePath.Replace(Request.ServerVariables["APPL_PHYSICAL_PATH"], String.Empty);
32
felixmm
    public static string MapPathReverse(string fullServerPath)
    {            
        return @"~\" + fullServerPath.Replace(HttpContext.Current.Request.PhysicalApplicationPath,String.Empty);
    }
25
Iman Abidi
Request.ServerVariables["APPL_PHYSICAL_PATH"]

c'est bien, mais pas toujours. Il n'est disponible que s'il y a une requête HTTP.

D'un autre côté, l'appel

HostingEnvironment.ApplicationPhysicalPath

est toujours disponible.

12
Alexander Christov

Vous pouvez également faire quelque chose comme ceci:

string relativePath = absolutePath.Replace(HttpContext.Current.Server.MapPath("~/"), "~/").Replace(@"\", "/");

L'avantage est que vous n'avez pas besoin de HttpContext.Current.Request.

9
Pierre Chavaroche