次の関数を使用して、パスを有効な仮想パスに変換しています。
public string GetFullPath(string path)
{
Ensure.Argument.NotNullOrEmpty(path, "path");
if (path[0] == '~') // a virtual path e.g. ~/assets/style.less
{
return path;
}
if (VirtualPathUtility.IsAbsolute(path)) // an absolute path e.g. /assets/style.less
{
return VirtualPathUtility.ToAppRelative(path,
HostingEnvironment.IsHosted ? HostingEnvironment.ApplicationVirtualPath : "/");
}
// otherwise, assume relative e.g. style.less or ../../variables.less
return VirtualPathUtility.Combine(VirtualPathUtility.AppendTrailingSlash(currentFileDirectory), path);
}
これは、入力がWebサイトディレクトリの上path
の相対パスである場合を除いて、すべてのテストに合格します。
たとえば、のと相対パスがcurrentFileDirectory
与えられた場合、これを検出してパスを修正しようとします。~/foo/bar
../../../