UrlHelper.ActionLinkメソッドで絶対URLを取得する - ASP.NET Core MVC
UrlHelperのActionLinkメソッドを使うと絶対URLを取得できます。
ASP.NET Core 3.0で追加されたようです。知らなかった。
Actionメソッド
Actionメソッドは相対URLを取得できます。普段使うやつですね。
Url.Action("Index", "Sample") // 戻り値 // /sample/index
ActionLinkメソッド
ActionLinkメソッドは絶対URLを取得できます。ビュー以外での利用になるかと思いますが、絶対URLが欲しいときがたまにあります。
Url.ActionLink("Index", "Sample") // 戻り値(https://example.jpに配置してあるとして) // https://example.jp/sample/index
Actionメソッドは引数にscheme(protocol)やhostを指定すると絶対URLを返すようになっていて、ActionLinkメソッドはこの仕様を利用しているようです。schemeやhostの値にHttpContextのリクエストから取得した値を指定してActionメソッドを呼び出しています。
スキームを指定したActionメソッド
Url.Action("Index", "Sample", null, HttpContext.Request.Scheme) // 戻り値(https://example.jpに配置してあるとして) // https://example.jp/sample/index