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?
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);
public static string MapPathReverse(string fullServerPath)
{
return @"~\" + fullServerPath.Replace(HttpContext.Current.Request.PhysicalApplicationPath,String.Empty);
}
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.
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
.