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

Joe*_*orn 193 asp.net

我有一个ASP.Net页面,它将托管在几个不同的服务器上,我想获取页面的URL(甚至更好:托管页面的站点)作为在代码隐藏中使用的字符串.有任何想法吗?

Mik*_*key 225

用这个:

Request.Url.AbsoluteUri
Run Code Online (Sandbox Code Playgroud)

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

  • 请记住,这还将包括查询部分(?key = value ....) (8认同)
  • 如果应用程序未托管在服务器根目录上但在目录中,则此方法无效.如果该应用程序托管在www.contoso.com/app/上,则只返回www.contoso.com (5认同)

WDu*_*ffy 118

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

Request.Url.GetLeftPart(UriPartial.Authority)
Run Code Online (Sandbox Code Playgroud)

  • @Kimball我不确定将字符串连接在一起是一个更好的解决方案. (22认同)
  • 更好的解决方案发布在http://stackoverflow.com/questions/567590/asp-net-absolute-path-of-a-url (3认同)

小智 30

我在用

Request.Url.GetLeftPart(UriPartial.Authority) +
        VirtualPathUtility.ToAbsolute("~/")
Run Code Online (Sandbox Code Playgroud)


Pre*_*ent 12

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

}
Run Code Online (Sandbox Code Playgroud)

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

  • 请注意,`Authority` 不包括协议(`http://` 或 `https://`)。在您的情况下很好,但可能不适用于某些人。不过可以通过`System.Web.HttpContext.Current.Request.Url.Scheme` 获得。 (2认同)

Dar*_*opp 8

你想要服务器名称吗?还是主机名?

Request.Url.Host ala Stephen

Dns.GetHostName - 服务器名称

Request.Url将可以访问您需要了解的有关所请求页面的大部分内容.


小智 8

Request.Url.GetLeftPart(UriPartial.Authority) + Request.FilePath + "?theme=blue";
Run Code Online (Sandbox Code Playgroud)

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


小智 5

我遇到了同样的问题,到目前为止,我发现:

new Uri(Request.Url,Request.ApplicationPath)
Run Code Online (Sandbox Code Playgroud)

要么

Request.Url.GetLeftPart(UriPartial.Authority)+Request.ApplicationPath
Run Code Online (Sandbox Code Playgroud)