Asp.netの物理パスから相対仮想パスを取得するにはどうすればよいですか?逆の方法は次のとおりです。
Server.MapPath("Virtual Path Here");
しかし、上の方法の逆は何ですか?
多分 この質問 はあなたが探しているものです。そこで提案されているのは:
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"]
大丈夫ですが、常にではありません。 HTTPリクエストがある場合にのみ使用できます。
一方、呼び出し
HostingEnvironment.ApplicationPhysicalPath
常にが利用可能です。
次のようなこともできます。
string relativePath = absolutePath.Replace(HttpContext.Current.Server.MapPath("~/"), "~/").Replace(@"\", "/");
利点は、HttpContext.Current.Request
が必要ないことです。