You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

创建获取数据的基础Web API:访问myTable接口报404问题求助

问题分析与解决

核心问题:路由不匹配

你的控制器使用[Route("[controller]")]特性,控制器类名为My_Controller,ASP.NET会自动提取控制器名称去掉后缀Controller的部分作为路由前缀,也就是/My_,但你访问的是/myTable/,两者完全不匹配,这是返回404的直接原因。

解决步骤

1. 修正路由,匹配预期路径

直接修改控制器的路由特性,指定为myTable,同时优化控制器基类(API无需视图支持):

[Route("myTable")]
[ApiController]
public class My_Controller : ControllerBase
{
    private readonly My_Services _services;

    public My_Controller(My_Services services)
    {
        _services = services;
    }

    [HttpGet]
    public async Task<IQueryable<My_Model>> Get()
    {
        return await _services.Get_All_Data();
    }

    // 删除Index方法,API不需要返回视图
}

2. 修复服务方法的异步逻辑

你的Get_All_Data标记了async但未使用await,属于无效异步。如果仅需返回延迟执行的查询,可去掉异步标记:

public IQueryable<My_Model> Get_All_Data()
{
    return _context.My_DbSet; // 等价于原LINQ查询,更简洁
}

若需立即执行查询并返回结果集(避免后续延迟执行的潜在问题),可调整为:

public async Task<List<My_Model>> Get_All_Data()
{
    return await _context.My_DbSet.ToListAsync();
}

对应控制器方法同步修改为:

[HttpGet]
public async Task<List<My_Model>> Get()
{
    return await _services.Get_All_Data();
}

3. 验证访问路径

修改完成后,访问https://localhost:7048/myTable(末尾斜杠可选),即可获取JSON格式的表数据。

额外优化建议

  • API控制器优先继承ControllerBase,而非Controller,减少不必要的视图相关功能。
  • 依赖注入字段使用private readonly修饰,避免被意外修改。
  • 异步方法必须正确搭配async/await,避免假异步引发的问题。

内容的提问来源于stack exchange,提问作者dave

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 05:10:30