在代码隐藏中获取ASP.Net页面的URL

时间:2008-09-18 19:27:26

标签: asp.net

我有一个ASP.Net页面,它将托管在几个不同的服务器上,我想获取页面的URL(甚至更好:托管页面的站点)作为字符串用于代码隐藏。有什么想法吗?

10 个答案:

答案 0 :(得分:218)

使用此:

Request.Url.AbsoluteUri

这将为您提供完整的路径(包括http://..。)

答案 1 :(得分:116)

如果您只想要请求(协议,主机和端口)的方案和权限部分,请使用

Request.Url.GetLeftPart(UriPartial.Authority)

答案 2 :(得分:28)

我正在使用

Request.Url.GetLeftPart(UriPartial.Authority) +
        VirtualPathUtility.ToAbsolute("~/")

答案 3 :(得分:9)

我在自定义类的代码中使用它。发送电子邮件(如no-reply@example.com)非常方便 “no-reply @”+ BaseSiteUrl 在任何网站上都可以正常使用。

// get a sites base urll ex: example.com
public static string BaseSiteUrl
{
    get
    {
        HttpContext context = HttpContext.Current;
        string baseUrl = context.Request.Url.Authority + context.Request.ApplicationPath.TrimEnd('/');
        return baseUrl;
    }

}

如果你想在代码隐藏中使用它来摆脱上下文。

答案 4 :(得分:7)

您想要服务器名称吗?还是主机名?

Request.Url.Host ala Stephen

Dns.GetHostName - 服务器名称

Request.Url可以访问您需要了解的有关所请求页面的大部分内容。

答案 5 :(得分:7)

Request.Url.GetLeftPart(UriPartial.Authority) + Request.FilePath + "?theme=blue";

将为您提供所在页面的完整路径。我在查询字符串中添加了。

答案 6 :(得分:4)

我面临同样的问题,到目前为止我发现:

new Uri(Request.Url,Request.ApplicationPath)

Request.Url.GetLeftPart(UriPartial.Authority)+Request.ApplicationPath

答案 7 :(得分:3)

Request.Url.Host

答案 8 :(得分:2)

如果要在末尾包含任何唯一字符串,类似于example.com?id=99999,请使用以下

Dim rawUrl As String = Request.RawUrl.ToString()

答案 9 :(得分:2)

使用js文件可以捕获以下内容,也可以在代码隐藏中使用:

<script type="text/javascript">
    alert('Server: ' + window.location.hostname);
    alert('Full path: ' + window.location.href);
    alert('Virtual path: ' + window.location.pathname);
    alert('HTTP path: ' + 
        window.location.href.replace(window.location.pathname, ''));    
</script>