如何获得 C # 中所在页面的完整网址

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

215167 次浏览

请求 RawUrl

如果您需要完整的 URL 作为从 http 到 querystring 的所有内容,则需要连接以下变量

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

谢谢你们,为了满足我的特殊需要,我把你们的回答“克里斯蒂安”和“乔纳森”结合起来了。

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

我不需要担心安全的 http,只需要 servername 变量和 RawUrl 处理域名的路径,如果存在的话还包括 query 字符串。

我通常使用 Request.Url.ToString()获取完整的 url (包括 querystring) ,不需要连接。

Request.Url.AbsoluteUri

这个属性可以完成您需要的所有工作,所有工作都在一个简洁的调用中完成。

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

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;
}

下面是一个列表,我通常会参考这类信息:

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

希望你会发现这个有用!

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

对于 ASP.NET Core,你需要把它拼写出来:

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

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

@using Microsoft.AspNetCore.Http.Extensions

那么

@Context.Request.GetDisplayUrl()

对于 @using来说,_ViewImports.cshtml可能是一个更好的位置

试试下面的-

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