这里我们定义一个方法来实现这个问题
//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)
}
//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)
}
浙公网安备 33010602011771号