ASP.NET 根路径的获取
private string _ApplicationPath;
/// <summary>
/// 虚拟应用程序根路径
/// </summary>
public string ApplicationPath
{
get
{
_ApplicationPath = HttpContext.Current.Request.ApplicationPath;
if (_ApplicationPath.Length == 1)
{
_ApplicationPath = "";
}
return _ApplicationPath;
}
}
private string _CurrentPath;
/// <summary>
/// 当前的绝对路径
/// </summary>
public string CurrentPath
{
get
{
_CurrentPath = HttpContext.Current.Server.MapPath(".").ToLower();//当前的绝对路径(这里MapPath里的"."代表当前服务器)
if (_CurrentPath.Length == 1)
{
_CurrentPath = "";
}
return _CurrentPath;
}
}
private string _RootPath;
/// <summary>
/// 系统的根目录
/// </summary>
public string RootPath
{
get
{
_RootPath = HttpContext.Current.Server.MapPath(HttpContext.Current.Request.ApplicationPath).ToLower();//当前的绝对路径
if (_RootPath.Length == 1)
{
_RootPath = "";
}
return _RootPath;
}
}
/**//// <summary>
///
/// </summary>
/// <param name="page"> 当前页面指针,一般为 this</param>
/// <param name="specifiedPath"> 绝对路径 </param>
/// <returns> 虚拟路径 , 型如 : http://www.cnblogs.com/</returns>
public static string ConvertSpecifiedPathToRelativePathForPage(Page page, string specifiedPath)
{
// 根目录虚拟路径
string virtualPath = page.Request.ApplicationPath;
// 根目录绝对路径
string pathRooted = HostingEnvironment.MapPath(virtualPath);
// 页面虚拟路径
string pageVirtualPath = page.Request.Path;
{
throw new Exception(string.Format("\"{0}\" 是虚拟路径而不是绝对路径 !", specifiedPath));
}
//( 测试发现, pathRooted 在 VS2005 自带的服务器跟在 IIS 下根目录或者虚拟目录运行似乎不一样 ,
// 有此地方后面会加"\", 有些则不会, 为保险起见判断一下 )
if (pathRooted.Substring(pathRooted.Length - 1, 1) == "\\")
{
specifiedPath = specifiedPath.Replace(pathRooted, "/");
}
else
{
specifiedPath = specifiedPath.Replace(pathRooted, "");
}
int pageNodesCount = pageNodes.Length - 2;
{
relativePath = "/.." relativePath;
}
{
// 如果存在 ".." , 则把最前面的 "/" 去掉
relativePath = relativePath.Substring(1, relativePath.Length - 1);
}
}
/**//// <summary>
/// 将 Web 站点下的绝对路径转换为虚拟路径
/// 注:非 Web 站点下的则不转换
/// </summary>
/// <param name="page"> 当前页面指针,一般为 this</param>
/// <param name="specifiedPath"> 绝对路径 </param>
/// <returns> 虚拟路径 , 型如 : ~/</returns>
public static string ConvertSpecifiedPathToRelativePath(Page page, string specifiedPath)
{
string virtualPath = page.Request.ApplicationPath;
{
return specifiedPath;
}
{
specifiedPath = specifiedPath.Replace(pathRooted, "~/");
}
else
{
specifiedPath = specifiedPath.Replace(pathRooted, "~");
}
return relativePath;
}
将虚拟路径转绝对路就没什么好说的了, HttpRequest.MapPath 方法专门干这事