如何获取服务器端 Blazor 应用程序的基本 URL

Dej*_*jan 2 blazor blazor-server-side

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

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

我如何才能知道我的应用程序已部署到哪个 URL 并在哪个 URL 上运行?

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

Hen*_*man 9

将其放入页面很容易:

@inject NavigationManager Navigator

<p>@Navigator.BaseUri</p>
Run Code Online (Sandbox Code Playgroud)

但是你不能NavigationManagerStartup课堂上使用 a 。


Ros*_*s P 5

在 .Net Core 3.0 之后,IUriHelper已被替换为NavigationManager

要在 Blazor 页面内使用:

    @inject NavigationManager NavigationManager

   //example usage
   var client = _clientFactory.CreateClient();
   client.BaseAddress = new Uri(NavigationManager.BaseUri);
Run Code Online (Sandbox Code Playgroud)