博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

如何将相对路径转化为绝对路径

Posted on 2009-09-23 18:51  一刻  阅读(1239)  评论(0)    收藏  举报
这里我们定义一个方法来实现这个问题
//relativeurl这个参数是传进来的参数,也就是要转化成绝对路径的相对路径
public  static string  BuildAbsolute(string  relativeurl)
{
  // System.Uri 的uri对象提供统一资源标识符 (URI) 的对象表示形式和对 URI 各部分的轻松访问。
  //使用Httpcontext的Current静态属性,获取当前请求的Httpcontext对象;
  //Httpcontext.Current.Request为当前请求获取Httprequest对象
  //Httprequest成员使 ASP.NET 能够读取客户端在 Web 请求期间发送的 HTTP 值
  //Httpcontext.Current.Request.Url获取有关当前请求的 URL 的信息。
  System.Uri  uri=Httpcontext.Current.Request.Url; 
  //获取服务器上 ASP.NET 应用程序的虚拟应用程序根路径。
  string app=Httpcontext.Current.Request.ApplicationPath;
  //如果应用程序根路径不是以"\"结束的话,我们在它后面加一个"\"
if(!app.endwith("\"))
{
     app+="\";
}
//因为我们前面加了"\",所以这里我们这样处理
relativeurl=relativeurl.Trimstart("\");
//最后我们返回绝对路径,这里通过我们对字符串进行了编码HttpUtility.UrlPathEncode,uri.Host主机名,uri.Port端口
return HttpUtility.UrlPathEncode(String.Format("http://{0}:{1}{2}{3}",uri.Host,uri.Port,app,relativeurl)
}