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

我有一个ASP.Net页面,将托pipe在几个不同的服务器上,我想要获取页面的URL(甚至更好:页面托pipe的网站)作为一个string在代码隐藏。 有任何想法吗?

用这个:

Request.Url.AbsoluteUri 

这将让你的完整path(包括http:// .. )

如果只想要请求(协议,主机和端口)的scheme和权威部分使用

 Request.Url.GetLeftPart(UriPartial.Authority) 

我在用

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

我在我的代码中使用这个自定义类。 用于发送电子邮件,如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; } } 

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

你想要的服务器名称? 或主机名?

Request.Url.Host ala Stephen

Dns.GetHostName – 服务器名称

Request.Url将能够访问您所需要知道的关于所请求页面的大部分内容。

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

这会给你正在坐的页面的完整path。 我在查询string中添加。

Request.Url.Host

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

 new Uri(Request.Url,Request.ApplicationPath) 

要么

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

如果您希望在结尾包含任何唯一string,与example.com?id = 99999类似,请使用以下内容

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

使用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>