欢迎访问 生活随笔!

ag凯发k8国际

当前位置: ag凯发k8国际 > 编程语言 > asp.net >内容正文

asp.net

asp.net根路径的获取和将web站点下的绝对路径转换为虚拟路径的两种方案 -ag凯发k8国际

发布时间:2024/10/8 asp.net 0 豆豆
ag凯发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
///
绝对路径
///
虚拟路径, 型如: http://www.cnblogs.com/
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

总结

以上是ag凯发k8国际为你收集整理的asp.net根路径的获取和将web站点下的绝对路径转换为虚拟路径的两种方案的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得ag凯发k8国际网站内容还不错,欢迎将ag凯发k8国际推荐给好友。

网站地图