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() |