【问题标题】:How to Get the Base Url of a Server-Side Blazor App如何获取服务器端 Blazor 应用程序的基本 URL
【发布时间】:2019-12-22 13:18:17
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: blazor blazor-server-side


    【解决方案1】:

    在页面中获取它很容易:

    @inject NavigationManager Navigator
    
    <p>@Navigator.BaseUri</p>
    

    但您不能在 Startup 类中使用 NavigationManager

    【讨论】:

    • 这已经很有帮助了。我可以解决这个问题,直到有人弄清楚如何在启动时得到它。
    • 如果需要 NuGet pkg,如果此信息总是包含在答案中,那就太好了。不能假设我们会知道。
    • 我什至在 2020 年 10 月对此表示赞同,因为它引导我走向正确的方向,但对于那些现在来到这里使用 .NET 5 的人来说,看看 NavigationManager。
    • @FrankHale - 是的,Blazor 过去几年发展迅速。
    【解决方案2】:

    在 .Net Core 3.0 及以后的版本中,IUriHelper 已替换为 NavigationManager

    在 Blazor 页面中使用:

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

    【讨论】:

      猜你喜欢
      • 2020-07-04
      • 2020-05-10
      • 2020-09-18
      • 2021-10-21
      • 1970-01-01
      • 2021-06-25
      • 2019-12-02
      • 2020-04-15
      • 1970-01-01
      相关资源
      最近更新 更多