1. ホーム
  2. asp.net

[解決済み] ASP.NET Coreで自分のサイトのbaseurlを取得するには?

2023-02-07 15:54:37

質問

私のウェブサイトは マイウェブサイト のフォルダーにあります。 www.example.com にアクセスし https://www.example.com/mywebsite/home/about .

MVCコントローラでbase urlの部分を取得するには?私が探している部分は https://www.example.com/mywebsite

記載されている例 はここで は動作しません。ASP.NET CoreではRequest.Urlにアクセスできないからです。

どうすれば解決する?

必要なものを組み合わせることができるはずです。コントローラが Controller .

VS2017を使用している場合、新規にASPNet Core MVCアプリを起動し、homecontrollerを置き換えます。

public class HomeController : Controller
{
    public IActionResult Index()
    {
        return View();
    }

    public IActionResult About()
    {
        ViewData["Message"] = $"{this.Request.Scheme}://{this.Request.Host}{this.Request.PathBase}";

        return View();
    }

    public IActionResult Contact()
    {
        ViewData["Message"] = "Your contact page.";

        return View();
    }

    public IActionResult Error()
    {
        return View();
    }
}

私はちょうど "About" メソッドにあなたが興味を持ちそうなものをいくつか入れましたが、他に何が利用できるかを知るために、リクエストクラスの残りの部分を探索するべきです。

Tseng が指摘したように、IIS または Azure App Service の後ろで Kestrel を実行すると問題があるかもしれませんが、IISIntegration パッケージまたは AzureAppServices パッケージを使用すれば (Nuget パッケージをインストールして WebHostBuilder の Program.cs に追加すれば)、これらのヘッダーを転送してくれるはずです。Azureでは、どのホスト名にヒットするかで判断しなければならないことがあるので、これはとても有効です。IIS/Azure パッケージは、元のリモート IP アドレスも転送し、私はそれをログに記録しています。