web-dev-qa-db-ja.com

ASPNETコアでアプリケーション仮想ベースパスを取得する

これはHttpContext.Request.PathBaseにありますが、HttpContextStartup.cs内)を取得する前にCookieを構成する必要があります。

私の問題:

アプリケーションを構成するとき、パスを2回設定する必要があります。 IISアプリケーション(ホスティングは何を提供すべきかを知っている)に、アプリケーションはcookieを設定する場所を知っている-サーバーで複数のインスタンスが動作できるようになっています。 IISで1回実行し、アプリケーションに構成を渡します。

8
Shadow

環境変数ASPNETCORE_APPL_PATHを確認できます。これは、PathBaseを正しく設定できるようにAspNetCoreModuleが提供する変数です。 https://github.com/aspnet/IISIntegration/blob/df88e322cc5e52db3dbce4060d5bc7db88edb8e4/src/Microsoft.AspNetCore.Server.IISIntegration/WebHostBuilderIISExtensions.cs#L19 を参照してください。

4
Tratcher

ここには、明確にすべき少し混乱があります。

アプリケーション起動時のアプリケーション仮想パスを知りたい。ただし、アプリケーション仮想パスは、基盤となるアプリケーションではなく、ホスティングおよび特定の要求の概念です。ホスティングサービスは、この仮想パスを使用して、着信URLをアプリケーションルートにマップします。 IISでは、複数の仮想パスを同じ物理ディレクトリにマップできます。たとえば、/ myApp1と/ myApp2は同じアプリケーションを指します。これらのパスのどれをアプリケーションの起動時に取得しますか?

これが、実際にIHostingEnvironmentインターフェイスがアプリケーションの仮想パスを取得するためのプロパティを提供しない理由です。アプリケーションがリクエストを処理するときのもう1つのこと。この場合、特定のURLが要求され、ASP.NETは要求された仮想パスをHttpContext.Request.PathBase

ユースケースを再検討し、実際にCookie構成にアプリケーション仮想パスが必要かどうかを確認する必要があります。 XY問題 の可能性があります。それでもCookieの構成について疑問がある場合は、シナリオの具体的な詳細を記載した新しい質問として作成してください。

4
CodeFuller