如何在C#中获取我所在页面的完整URL

时间:2008-09-02 21:09:44

标签: c# asp.net user-controls

我需要能够从用户控件获取我所在页面的完整URL。这只是将一堆Request变量连接在一起的问题吗?如果是这样的?还是有更简单的方式?

10 个答案:

答案 0 :(得分:307)

以下是我通常会参考此类信息的列表:

Request.ApplicationPath :   /virtual_dir
Request.CurrentExecutionFilePath :  /virtual_dir/webapp/page.aspx
Request.FilePath :  /virtual_dir/webapp/page.aspx
Request.Path :  /virtual_dir/webapp/page.aspx
Request.PhysicalApplicationPath :   d:\Inetpub\wwwroot\virtual_dir\
Request.QueryString :   /virtual_dir/webapp/page.aspx?q=qvalue
Request.Url.AbsolutePath :  /virtual_dir/webapp/page.aspx
Request.Url.AbsoluteUri :   http://localhost:2000/virtual_dir/webapp/page.aspx?q=qvalue
Request.Url.Host :  localhost
Request.Url.Authority : localhost:80
Request.Url.LocalPath : /virtual_dir/webapp/page.aspx
Request.Url.PathAndQuery :  /virtual_dir/webapp/page.aspx?q=qvalue
Request.Url.Port :  80
Request.Url.Query : ?q=qvalue
Request.Url.Scheme :    http
Request.Url.Segments :  /
    virtual_dir/
    webapp/
    page.aspx

希望你会发现这很有用!

答案 1 :(得分:146)

我通常使用Request.Url.ToString()来获取完整的网址(包括查询字符串),不需要连接。

答案 2 :(得分:71)

Request.Url.AbsoluteUri

此属性可以完成您所需的一切,只需一个简洁的电话。

答案 3 :(得分:9)

Request.RawUrl

答案 4 :(得分:9)

如果您需要完整的URL作为从http到查询字符串的所有内容,您将需要连接以下变量

Request.ServerVariables("HTTPS") // to check if it's HTTP or HTTPS
Request.ServerVariables("SERVER_NAME") 
Request.ServerVariables("SCRIPT_NAME") 
Request.ServerVariables("QUERY_STRING")

答案 5 :(得分:8)

对于ASP.NET Core,您需要拼写出来:

@($"{Context.Request.Scheme}://{Context.Request.Host}{Context.Request.Path}{Context.Request.QueryString}")

或者您可以在视图中添加using语句:

@using Microsoft.AspNetCore.Http.Extensions

然后

@Context.Request.GetDisplayUrl()

对于_ViewImports.cshtml

@using可能是一个更好的地方

答案 6 :(得分:7)

最好使用Request.Url.OriginalString而不是Request.Url.ToString()(根据MSDN

答案 7 :(得分:5)

谢谢大家,我结合你的答案@Christian和@Jonathan满足我的特殊需求。

"http://" + Request.ServerVariables["SERVER_NAME"] +  Request.RawUrl.ToString()

我不需要担心安全的http,需要servername变量,RawUrl处理来自域名的路径,并包含查询字符串(如果存在)。

答案 8 :(得分:1)

如果您还需要端口号,可以使用

Request.Url.Authority

示例:

string url = Request.Url.Authority + HttpContext.Current.Request.RawUrl.ToString();

if (Request.ServerVariables["HTTPS"] == "on")
{
    url = "https://" + url;
}
else 
{
    url = "http://" + url;
}

答案 9 :(得分:0)

尝试以下-

var FullUrl = Request.Url.AbsolutePath.ToString();
var ID = FullUrl.Split('/').Last();