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

时间:2019-08-16 07:54:26

标签: blazor blazor-server-side

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

在传统的ASP.NET Web应用程序中,我可以检查控制器的Request属性并从中检索信息(有SchemeHost和{{1} } 为了那个原因)。但是,由于这是运行Blazor的服务器端应用程序,因此没有PathBase对象(至少在我看来,除非是在服务Request时)。

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

理想情况下,我将在启动时获得此信息,以便可以相应地配置服务。

2 个答案:

答案 0 :(得分:4)

在.Net Core 3.0及更高版本中,IUriHelper已替换为NavigationManager

要在Blazor页面中使用:

    @inject NavigationManager NavigationManager

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

答案 1 :(得分:1)

在页面内获取它很容易:

@inject Microsoft.AspNetCore.Components.IUriHelper UriHelper

<p>@UriHelper.GetBaseUri()</p>

但是您不能在IUriHelper类中使用Startup