web-dev-qa-db-ja.com

物理パスから相対仮想パスを取得する

Asp.netの物理パスから相対仮想パスを取得するにはどうすればよいですか?逆の方法は次のとおりです。

Server.MapPath("Virtual Path Here");

しかし、上の方法の逆は何ですか?

38
SilverLight

多分 この質問 はあなたが探しているものです。そこで提案されているのは:

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"]

大丈夫ですが、常にではありません。 HTTPリクエストがある場合にのみ使用できます。

一方、呼び出し

HostingEnvironment.ApplicationPhysicalPath

常にが利用可能です。

12

次のようなこともできます。

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

利点は、HttpContext.Current.Requestが必要ないことです。

9