ASP.NET Coreでサイトのbaseurlを取得するにはどうすればいいですか?
私のウェブサイトが www.example.com の mywebsite フォルダーにホストされていて、私が https://www.example.com/mywebsite/home/about にアクセスしたとします。
MVCコントローラでベースURLの部分を取得するにはどうしたらいいですか?私が探しているのは、https://www.example.com/mywebsite です。
ASP.NET CoreではRequest.Urlにアクセスできないため、こちらに記載されている例は動作しません。
41
3
それでも、必要なものをまとめることができるはずです。コントローラが
Controller
を継承していれば、リクエストオブジェクトにアクセスすることができます。VS2017を使用している場合、新しいASPNet Core MVCアプリを起動し、homecontrollerを以下のように置き換えます。
About"メソッドに興味のあるものを入れただけですが、リクエストクラスの他の部分も調べて、他にどんなものがあるか知っておいてください。
しかし、IISIntegrationパッケージやAzureAppServicesパッケージを使用すれば(Nugetパッケージをインストールして、WebHostBuilderのProgram.csに追加すれば)、これらのヘッダを転送してくれるはずです。Azureでは、どのホスト名にヒットしたかで判断しなければならないことがあるので、この機能はとても便利です。IIS/Azureパッケージは、オリジナルのリモートIPアドレスも転送し、それを記録します。
これがアプリのどこかで必要な場合は、ミドルウェアを構築する必要があります。 ミドルウェアをサービスパイプラインに追加するために、スタティッククラスとエクステンションメソッドを以下のように定義します。
この場合、HttpContextを公開するのは少し冗長かもしれませんが、私はとても便利だと思います。
Startup.csにあるConfigfureメソッドでパイプラインに追加します。
ここからは、コードのどこでも簡単に使用できます。
は、こちらで詳細をご確認いただけます。 https://stackoverflow.com/questions/1288046/how-can-i-get-my-webapps-base-url-in-asp-net-mvc