我有一个ASP.Net页面,它将托管在几个不同的服务器上,我想获取页面的URL(甚至更好:托管页面的站点)作为字符串用于代码隐藏。有什么想法吗?
答案 0 :(得分:218)
答案 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>