在aspnet核心中获取应用程序虚拟基本路径

Sha*_*dow 8 asp.net-core-mvc asp.net-core asp.net-core-2.0

我知道它位于HttpContext.Request.PathBase,但是在我有任何HttpContext(in Startup.cs)之前我需要它来配置我的cookie .

我的问题:

当devops配置应用程序时,他们必须设置两次路径.一旦进入IIS应用程序(所以托管知道应该提供什么)和我的appsettings.json(所以应用程序知道在哪里设置cookie - 多个实例可以在服务器上工作).我想在IIS中配置一次,并将配置传递给我的应用程序.

Cod*_*ler 7

这里有一点需要澄清的混乱。

您想知道应用程序启动时的应用程序虚拟路径。然而,应用程序虚拟路径是托管和特定请求的概念,而不是底层应用程序。托管服务使用此虚拟路径将传入 url 映射到应用程序根目录。在 IIS 中,您可以将多个虚拟路径映射到同一个物理目录,例如 /myApp1 和 /myApp2 将指向同一个应用程序。您希望在应用程序启动时获得以下哪些路径?

这实际上是IHostingEnvironment接口不提供任何用于获取应用程序虚拟路径的属性的原因。应用程序处理请求时的另一件事。在这种情况下,请求特定的 URL 并且 ASP.NET 可以在HttpContext.Request.PathBase.

您应该重新考虑您的用例并检查您是否确实需要应用程序虚拟路径来配置 cookie。这可能是XY 问题。如果您对 cookie 配置仍有疑问,请将其制定为新问题,并针对您的场景提供具体细节。


Tra*_*her 5

您可以检查环境变量ASPNETCORE_APPL_PATH。这是AspNetCoreModule提供的变量,因此可以正确设置PathBase。参见https://github.com/aspnet/IISIntegration/blob/df88e322cc5e52db3dbce4060d5bc7db88edb8e4/src/Microsoft.AspNetCore.Server.IISIntegration/WebHostBuilderIISExtensions.cs#L19