Answers:
我通常使用Request.Url.ToString()
来获取完整的url(包括querystring),不需要串联。
Request.Url.ToString()
不包含queryString。
这是我通常参考的此类信息列表:
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.QueryString
q=qvalue
仅返回
Request.Url.AbsoluteUri
此属性只需一次简短调用即可完成您需要的一切。
因为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
Request.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")
谢谢大家,我将您的答案@Christian和@Jonathan结合使用以满足我的特定需求。
"http://" + Request.ServerVariables["SERVER_NAME"] + Request.RawUrl.ToString()
我不需要担心安全的http,不需要servername变量,而RawUrl可以处理来自域名的路径,并包括querystring(如果存在)。
试试以下-
var FullUrl = Request.Url.AbsolutePath.ToString();
var ID = FullUrl.Split('/').Last();