我需要能够从用户控件获得我所在页面的完整 URL。是否只是将一堆请求变量连接在一起的问题?如果是的话,是哪些呢?还是有更简单的方法?
请求 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.ToString()
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)
Request.Url.OriginalString
对于 ASP.NET Core,你需要把它拼写出来:
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可能是一个更好的位置
@using
_ViewImports.cshtml
试试下面的-
var FullUrl = Request.Url.AbsolutePath.ToString(); var ID = FullUrl.Split('/').Last();