我有一个服务器端的blazor应用程序,我需要知道它的基本URL(例如,https://localhost:1234
或https://my-host.com/appname
)。
在传统的ASP.NET Web应用程序中,我可以检查控制器的Request
属性并从中检索信息(有Scheme
,Host
和{{1} } 为了那个原因)。但是,由于这是运行Blazor的服务器端应用程序,因此没有PathBase
对象(至少在我看来,除非是在服务Request
时)。
然后我怎么知道我的应用程序已部署到哪个URL并在其中运行?
理想情况下,我将在启动时获得此信息,以便可以相应地配置服务。
答案 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
。