本问题已经有最佳答案,请猛点这里访问。
我有一个ASP.NET页面,它将托管在几个不同的服务器上,我希望得到页面的URL(或者更好的是:页面所在的站点)作为字符串,以便在代码隐藏中使用。有什么想法吗?
使用此:
这将为您提供完整的路径(包括http://…)
如果只需要请求的方案和权限部分(协议、主机和端口),请使用
1
| Request.Url.GetLeftPart(UriPartial.Authority) |
我正在使用
1 2
| Request.Url.GetLeftPart(UriPartial.Authority) +
VirtualPathUtility.ToAbsolute("~/") |
我在自定义类的代码中使用这个。可以方便地发送电子邮件,如no-reply@example.com。"没有答复@"+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() |