回答:
通常Request.Url.ToString()
、完全なURL(クエリ文字列を含む)を取得するために使用します。連結は必要ありません。
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
このプロパティは、必要なすべてを1つの簡潔な呼び出しで実行します。
以下のために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からクエリ文字列までの完全な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はドメイン名からのパスを処理し、存在する場合はクエリ文字列を含めます。
以下を試してください-
var FullUrl = Request.Url.AbsolutePath.ToString();
var ID = FullUrl.Split('/').Last();