【发布时间】:2020-07-15 14:56:36
【问题描述】:
上下文:
我们想要创建一个在客户端使用 Blazor WebAssembly 运行的单页应用程序。在服务器端,该解决方案有一个 ASP.NET MVC,其中包含一些用于我们的 REST API 的 ApiController 类。
我们希望在服务器端使用 ASP.NET API 而不是 Blazor Server,因为我们希望为未知的消费者提供带有 ApiController 类的 REST 接口。
这是我在单个解决方案中的客户端 (Blazor WebAssembly) 和服务器端 (ASP.NET API) 项目:
第一次尝试通过我们FetchData-component 中的 Blazor 的 HttpClient 类请求 API:
@inject HttpClient Http
...
@code {
private TodoItem[] TodoItems;
protected override async Task OnInitializedAsync()
{
TodoItems = await Http.GetJsonAsync<TodoItem[]>("api/ToDo");
}
}
在服务器端,API-Controller 如下所示:
namespace ToDoListAPI.Controllers
{
[Route("api/[controller]")]
[ApiController]
[Produces("application/json")]
public class ToDoController : ControllerBase
{
[HttpGet]
public string IGetAll()
{
var lResult = new List<ToDoList.TodoItem>();
// create dummies
for (var i = 0; i < 10; i++)
{
lResult.Add(new ToDoList.TodoItem() { Title = $"Title {i}", IsDone = false });
}
return JsonSerializer.Serialize(lResult);
}
}
}
问题:在我的 Blazor WebAssembly 项目中,对 API 的请求失败。 Blazor WebAssembly 项目通过https://localhost:44340/ 托管,API 通过https://localhost:44349/ 托管。如何像使用 JavaScript 框架一样托管这两个项目?
【问题讨论】:
标签: asp.net-core asp.net-web-api single-page-application blazor asp.net-blazor