如何获取服务器端 Blazor 应用程序的基础 Url
How to Get the Base Url of a Server-Side Blazor App
我有一个服务器端 blazor 应用程序,我需要知道它的基础 url(例如 https://localhost:1234
或 https://my-host.com/appname
)。
在传统的 ASP.NET 网络应用程序中,我可以检查控制器的 Request
属性 并从中检索信息(有 Scheme
、Host
,以及 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);
我有一个服务器端 blazor 应用程序,我需要知道它的基础 url(例如 https://localhost:1234
或 https://my-host.com/appname
)。
在传统的 ASP.NET 网络应用程序中,我可以检查控制器的 Request
属性 并从中检索信息(有 Scheme
、Host
,以及 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);