将 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 的链接。
假设我已经在项目中添加了控制器,我应该在 Startup
的 ConfigureServices()
和 Configure()
方法中修改什么以使用控制器?
【问题讨论】:
我能问一下 WebAPI 是供 Blazor 应用使用,还是供其他东西使用?如果只是向 Blazor 提供数据,则 Blazor 服务器不需要它 - Blazor 代码已经在服务器上运行。 @Quango 是为 Blazor 提供数据,但我认为构建像 WASM 应用程序这样的服务器端应用程序可以轻松切换到 WASM,因此我无需进行任何更改跨度> 是的,这是真的。最好的方法是将数据访问封装在一个接口中,例如IDataAccess - 为 WASM 创建一个 WebAPI 访问代码,对于服务器,您可以只获取数据。如果这是有道理的。您可以稍后在需要时执行 WebAPI。我有一个演示应用程序(有点过时但概念是一样的:github.com/conficient/BlazorServicePattern 不错!我最近只是在想它,但我真的找不到它的参考。感谢您的样品! @Quango 顺便说一句,我刚刚意识到 WebAPI 的控制器(ControllerBase
类,因为 Controller
用于 MVC 视图)返回 ActionResult不管怎样,终于想通了。要在 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)
使用 OWIN 将 Web API 托管为 Windows 服务