답변:
나는 일반적으로 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
http에서 querystring까지 모든 URL로 전체 URL이 필요한 경우 다음 변수를 연결해야합니다.
Request.ServerVariables("HTTPS") // to check if it's HTTP or HTTPS
Request.ServerVariables("SERVER_NAME")
Request.ServerVariables("SCRIPT_NAME")
Request.ServerVariables("QUERY_STRING")
( MSDN 에 따라 ) Request.Url.OriginalString
보다 사용하는 것이 좋습니다.Request.Url.ToString()
OriginalString
.
고마워, 나는 내 특정 요구에 대한 @Christian과 @Jonathan의 대답을 조합하여 사용했습니다.
"http://" + Request.ServerVariables["SERVER_NAME"] + Request.RawUrl.ToString()
보안 http에 대해 걱정할 필요가 없으며 servername 변수가 필요했으며 RawUrl은 도메인 이름의 경로를 처리하고 존재하는 경우 쿼리 문자열을 포함합니다.