169

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

4

10 回答 10

340

这是我通常参考的此类信息的列表:

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

希望你会发现这很有用!

于 2014-01-20T04:46:29.750 回答
159

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

于 2008-09-03T03:49:18.537 回答
76
Request.Url.AbsoluteUri

此属性可满足您的所有需求,只需一个简洁的调用即可。

于 2008-09-03T05:06:25.950 回答
19

因为ASP.NET Core你需要把它拼出来:

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

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

@using Microsoft.AspNetCore.Http.Extensions

然后

@Context.Request.GetDisplayUrl()

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

于 2017-09-20T00:28:39.007 回答
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")
于 2008-09-02T21:16:36.030 回答
8

Request.RawUrl

于 2008-09-02T21:11:23.877 回答
7

比使用更好Request.Url.OriginalStringRequest.Url.ToString()根据MSDN

于 2014-03-13T09:01:31.950 回答
5

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

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

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

于 2008-09-02T21:27:38.813 回答
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;
}
于 2013-12-03T14:17:14.087 回答
1

尝试以下 -

var FullUrl = Request.Url.AbsolutePath.ToString();
var ID = FullUrl.Split('/').Last();
于 2019-02-27T06:21:29.293 回答