asp.net根路径的获取和将web站点下的绝对路径转换为虚拟路径的两种方案 -凯发k8官方网
凯发k8官方网
收集整理的这篇文章主要介绍了
asp.net根路径的获取和将web站点下的绝对路径转换为虚拟路径的两种方案
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
asp.net 根路径的获取
private string _applicationpath;
///
/// 虚拟应用程序根路径
///
public string applicationpath
{
get
{
_applicationpath = httpcontext.current.request.applicationpath;
if (_applicationpath.length == 1)
{
_applicationpath = "";
}
return _applicationpath;
}
}
private string _currentpath;
///
/// 当前的绝对路径
///
public string currentpath
{
get
{
_currentpath = httpcontext.current.server.mappath(".").tolower();//当前的绝对路径(这里mappath里的"."代表当前服务器)
if (_currentpath.length == 1)
{
_currentpath = "";
}
return _currentpath;
}
}
private string _rootpath;
///
/// 系统的根目录
///
public string rootpath
{
get
{
_rootpath = httpcontext.current.server.mappath(httpcontext.current.request.applicationpath).tolower();//当前的绝对路径
if (_rootpath.length == 1)
{
_rootpath = "";
}
return _rootpath;
}
} 将web站点下的绝对路径转换为相对于指定页面的虚拟路径 第一个方法
/**
/// 将web站点下的绝对路径转换为相对于指定页面的虚拟路径
///
/// 当前页面指针,一般为this
/// 绝对路径
///
public static string convertspecifiedpathtorelativepathforpage(page page, string specifiedpath)
{
// 根目录虚拟路径
string virtualpath = page.request.applicationpath;
// 根目录绝对路径
string pathrooted = hostingenvironment.mappath(virtualpath);
// 页面虚拟路径
string pagevirtualpath = page.request.path; if (!path.ispathrooted(specifiedpath) || specifiedpath.indexof(pathrooted) == -1)
{
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, "");
} string relativepath = specifiedpath.replace("\\", "/"); string[] pagenodes = pagevirtualpath.split('/'); // 减去最后一个页面和前面一个 "" 值
int pagenodescount = pagenodes.length - 2; for (int i = 0; i < pagenodescount; i )
{
relativepath = "/.." relativepath;
} if (pagenodescount > 0)
{
// 如果存在 ".." , 则把最前面的 "/" 去掉
relativepath = relativepath.substring(1, relativepath.length - 1);
} return relativepath;
} 第二个方法 将web站点下的绝对路径转换为虚拟路径
/**
/// 将web站点下的绝对路径转换为虚拟路径
/// 注:非web站点下的则不转换
///
/// 当前页面指针,一般为this
/// 绝对路径
///
public static string convertspecifiedpathtorelativepath(page page, string specifiedpath)
{
string virtualpath = page.request.applicationpath; string pathrooted = hostingenvironment.mappath(virtualpath); if (!path.ispathrooted(specifiedpath) || specifiedpath.indexof(pathrooted) == -1)
{
return specifiedpath;
} if (pathrooted.substring(pathrooted.length - 1, 1) == "\\")
{
specifiedpath = specifiedpath.replace(pathrooted, "~/");
}
else
{
specifiedpath = specifiedpath.replace(pathrooted, "~");
} string relativepath = specifiedpath.replace("\\", "/");
return relativepath;
}
将虚拟路径转绝对路就没什么好说的了, httprequest.mappath 方法专门干这事
转自http://www.notsee.info/
转载于:https://www.cnblogs.com/junezhang/archive/2010/11/23/1885671.html
总结
以上是凯发k8官方网为你收集整理的asp.net根路径的获取和将web站点下的绝对路径转换为虚拟路径的两种方案的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 使用c#进行word 2002和exce
- 下一篇: linux ip 配置