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

如何获取服务器端Blazor应用程序的基本Url,blazor,blazor-server-side,Blazor,Blazor Server Side,我有一个服务器端blazor应用程序,我需要知道它的基本url(例如https://localhost:1234或https://my-host.com/appname) 在传统的ASP.NET web应用程序中,我可以检查控制器的Request属性并从中检索信息(有Scheme、Host和PathBase)。但是,由于这是一个运行Blazor应用程序的服务器端,因此没有请求对象(至少在我的理解中,可能除了在提供Index.cshtml时) 然后,我如何知道我的应用程序已部署到哪个URL并在哪个

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

在传统的ASP.NET web应用程序中,我可以检查控制器的
Request
属性并从中检索信息(有
Scheme
Host
PathBase
)。但是,由于这是一个运行Blazor应用程序的服务器端,因此没有
请求
对象(至少在我的理解中,可能除了在提供
Index.cshtml
时)

然后,我如何知道我的应用程序已部署到哪个URL并在哪个URL上运行


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

在页面中获取这些信息很容易:

@inject NavigationManager Navigator

<p>@Navigator.BaseUri</p>

但是您不能在
启动
类中使用
IUriHelper

将其放入页面很容易:

@inject NavigationManager Navigator

<p>@Navigator.BaseUri</p>

但是您不能在
启动
类中使用
IUriHelper

在.Net Core 3.0以后的
IUriHelper
中已被
NavigationManager

要在Blazor页面中使用:

    @inject NavigationManager NavigationManager

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

在.Net Core 3.0以后的版本中,
IUriHelper
已被
NavigationManager

要在Blazor页面中使用:

    @inject NavigationManager NavigationManager

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

这已经帮了大忙了。我可以用它来构建一个解决方案,直到有人知道如何在启动时获得它。如果有一个NuGet pkg需要它,那么如果这个信息总是包含在答案中就好了。不能假设我们会知道。即使在2020年10月,我也用拇指竖起了这个按钮,因为它指引了我正确的方向,但对于现在来这里学习.NET 5的人来说,请看一下NavigationManager。@FrankHale-是的,Blazor在过去几年里行动迅速。这已经很有帮助了。我可以用它来构建一个解决方案,直到有人知道如何在启动时获得它。如果有一个NuGet pkg需要它,那么如果这个信息总是包含在答案中就好了。我们不能假设我们会知道。即使在2020年10月,我也用拇指竖起了它,因为它指引了我正确的方向,但对于现在来这里学习.NET 5的人来说,请看一下NavigationManager。@FrankHale-是的,Blazor在过去的几年里迅速移动了。