【问题标题】:Blazor WASM app API call being aborted on 400 errorBlazor WASM 应用 API 调用因 400 错误而中止
【发布时间】:2021-06-07 14:26:22
【问题描述】:

不知道我在这里做错了什么。为简洁起见,省略了一些代码。它是 .NET Core 5 Blazor WASM。

我在代码块中有一个包含这个的组件:

private List<ToDoDetailDto> listOfTodos = new List<ToDoDetailDto>();

protected override async Task OnInitializedAsync()
{
    listOfTodos = await TodoService.GetTodos();
}

该组件调用 UI ToDo 服务:

public class TodoService: IToDoService
{
  private readonly HttpClient httpClient;

  public TodoService(HttpClient httpClient)
  {
    if (httpClient == null) throw new ArgumentNullException("Http is null.");
    this.httpClient = httpClient;
  }

  public async Task<List<ToDoDetailDto>> GetTodos()
  {
    var todos = await this.httpClient.GetFromJsonAsync<List<ToDoDetailDto>> 
                 ($"api/todos/GetAllTodos");
    return todos;
  }
}

在我的服务器文件夹中:我有这个:

[Authorize]
[Route("api/todos")]
[ApiController]
public class ToDosController: ControllerBase
{

  [HttpGet(Name = "GetAllTodos")]
  public async Task<IActionResult> GetAllTodos()
  {
     List<ToDoDetailDto> todoList = await todoRepo.GetAllTodosAsync();
     return Ok(todoList );
  }
}

【问题讨论】:

    标签: blazor blazor-webassembly


    【解决方案1】:

    您使用了错误的 HttpMethodAttribute 属性。尝试将控制器方法的属性更改为

    [HttpGet("GetAllTodos")]
    

    同样(与问题无关),但 REST API 路由不应包含动词,它与 http 动词是多余的。您可以阅读有关 REST API 约定的更多信息here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-22
      • 2021-08-12
      • 2021-04-07
      • 2023-03-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多