ASP.NET Core でサイトのベース URL を取得するにはどうすればいいですか? 質問する

ASP.NET Core でサイトのベース URL を取得するにはどうすればいいですか? 質問する

私のウェブサイトが私のウェブサイトフォルダの参考文献そして私は訪問するhttps://www.example.com/mywebsite/home/about

MVCコントローラーのベースURL部分を取得するにはどうすればよいですか?探している部分はhttps://www.example.com/mywebsite

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

ベストアンサー1

必要なものをまとめることはできるはずです。コントローラが を継承している場合は、リクエスト オブジェクトにアクセスできますController

VS2017 を使用している場合は、新しい ASPNet Core MVC アプリを起動し、ホーム コントローラーを次のように置き換えます。

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 パッケージをインストールし、Program.cs で WebHostBuilder に追加することにより)、それらのヘッダーが転送されるはずです。Azure では、ヒットするホスト名に基づいて決定を下す必要がある場合があるため、この方法は私にとって非常に有効です。IIS/Azure パッケージは、ログに記録した元のリモート IP アドレスも転送します。

おすすめ記事