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

Get URL of ASP.Net Page in code-behind

本问题已经有最佳答案,请猛点这里访问。

我有一个ASP.NET页面,它将托管在几个不同的服务器上,我希望得到页面的URL(或者更好的是:页面所在的站点)作为字符串,以便在代码隐藏中使用。有什么想法吗?


使用此:

1
Request.Url.AbsoluteUri

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


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

1
Request.Url.GetLeftPart(UriPartial.Authority)


我正在使用

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

我在自定义类的代码中使用这个。可以方便地发送电子邮件,如[email protected]。"没有答复@"+basesiteurl在任何地点都可以工作。

1
2
3
4
5
6
7
8
9
10
11
// 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;
    }

}

如果您想在codebehind中使用它,请去掉上下文。


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

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


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

请求.url.host ala stephen

dns.gethostname-服务器名

url可以访问你需要知道的关于被请求页面的所有信息。


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

1
new Uri(Request.Url,Request.ApplicationPath)

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

请求.url.host


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

1
2
3
4
5
6
<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, ''));

如果您想在末尾包含任何唯一的字符串,类似于example.com?ID=99999,然后使用以下内容

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