将 Blazor 服务器配置为托管 WebAPI

Posted

技术标签:

【中文标题】将 Blazor 服务器配置为托管 WebAPI【英文标题】:Configure Blazor Server to host WebAPI 【发布时间】:2020-09-03 10:18:15 【问题描述】:

我计划创建一个 ASP.NET Core 托管的 Blazor WASM 应用程序,但由于调试经验有限且开发速度较慢,我选择了托管 WebAPI 的 Blazor 服务器应用程序来模仿上述项目类型的体系结构以简化.NET 5 发布时切换回来。问题是我不知道如何配置Startup 类来使用WebAPI。不幸的是,我找不到任何演示在 Blazor Server 中使用 WebAPI 的链接。

假设我已经在项目中添加了控制器,我应该在 StartupConfigureServices()Configure() 方法中修改什么以使用控制器?

【问题讨论】:

我能问一下 WebAPI 是供 Blazor 应用使用,还是供其他东西使用?如果只是向 Blazor 提供数据,则 Blazor 服务器不需要它 - Blazor 代码已经在服务器上运行。 @Quango 是为 Blazor 提供数据,但我认为构建像 WASM 应用程序这样的服务器端应用程序可以轻松切换到 WASM,因此我无需进行任何更改跨度> 是的,这是真的。最好的方法是将数据访问封装在一个接口中,例如IDataAccess - 为 WASM 创建一个 WebAPI 访问代码,对于服务器,您可以只获取数据。如果这是有道理的。您可以稍后在需要时执行 WebAPI。我有一个演示应用程序(有点过时但概念是一样的:github.com/conficient/BlazorServicePattern 不错!我最近只是在想它,但我真的找不到它的参考。感谢您的样品! @Quango 顺便说一句,我刚刚意识到 WebAPI 的控制器(ControllerBase 类,因为 Controller 用于 MVC 视图)返回 ActionResult。你有过这个案例的经验吗? 【参考方案1】:

不管怎样,终于想通了。要在 Blazor Server 和任何 ASP.NET Core 应用程序中为 API 使用控制器,只需将控制器映射到 Configure()

public void Configure(IAppplicationBuilder app, IWebHostEnvironment env)

    ...
    app.UseEndpoints(endpoints => 
    
        endpoints.MapControllers();
        ...
    );

【讨论】:

以上是关于将 Blazor 服务器配置为托管 WebAPI的主要内容,如果未能解决你的问题,请参考以下文章

Blazor 无法连接到 ASP.NET Core WebApi (CORS)

Blazor WebApi 身份信息

使用 OWIN 将 Web API 托管为 Windows 服务

为 Service Fabric 配置 Azure 部署

对如何在 Blazor App 中从 B2C 获取访问令牌感到困惑

Blazor 托管 - 在显示应用程序之前立即授权