如何获取服务器端 Blazor 应用程序的基础 Url

How to Get the Base Url of a Server-Side Blazor App

我有一个服务器端 blazor 应用程序,我需要知道它的基础 url(例如 https://localhost:1234https://my-host.com/appname)。

在传统的 ASP.NET 网络应用程序中,我可以检查控制器的 Request 属性 并从中检索信息(有 SchemeHost,以及 PathBase)。但是因为这是一个 服务器端 运行 Blazor 应用程序,所以没有 Request 对象(至少在我的理解中,除了可能在服务 Index.cshtml).

然后我怎么知道我的应用程序已部署到 URL 并且 运行 在?

理想情况下,我在启动时就已经有了这些信息,这样我就可以相应地配置我的服务。

将其放入页面很容易:

@inject NavigationManager Navigator

<p>@Navigator.BaseUri</p>

但是您不能在 Startup class 中使用 NavigationManager

从 .Net Core 3.0 开始 IUriHelper 已被 NavigationManager 取代

要在 Blazor 页面内使用:

    @inject NavigationManager NavigationManager

   //example usage
   var client = _clientFactory.CreateClient();
   client.BaseAddress = new Uri(NavigationManager.BaseUri);