代码之家  ›  专栏  ›  技术社区  ›  Robin Khan

Blazor服务器控制器中未调用特定路由

  •  0
  • Robin Khan  · 技术社区  · 3 年前

    在我的ASP。NET Core托管的Blazor web程序集,我有一个控制器,如服务器项目中所示:

    [ApiController]
    [Route("api/[controller]")]
    public class BlogController : ControllerBase
    {
        private readonly AppDbContext _context;
    
        public BlogController(AppDbContext context)
        {
            _context = context;
        }
    
        [HttpGet("GetPagedBlogs")]
        public async Task<ActionResult<List<Blog>>> GetPagedBlogs()
        {
            var blogs = _context.Blogs.OrderByDescending(x => x.Created).ToList();
            return Ok(blogs ;
        }
    }
    

    当我尝试向发送请求时

    https://mydomain/api/blog/GetPagedBlogs
    

    它没有达到这个动作方法。但如果我更换 [HttpGet("GetPagedBlogs")] 只有 [HttpGet] 并将请求发送到 https://mydomain/api/blog ,然后到达动作方法。

    我错过了什么?

    我正在使用。NET 7,这是我的 program.cs 文件

    builder.Services.AddControllersWithViews();
    builder.Services.AddRazorPages();
    builder.Services.AddDbContext<AppDbContext>(x => x.UseSqlite(builder.Configuration.GetConnectionString("DefaultConnection")));
    
    var app = builder.Build();
    
    // Configure the HTTP request pipeline.
    if (app.Environment.IsDevelopment())
    {
        app.UseWebAssemblyDebugging();
    }
    else
    {
        app.UseExceptionHandler("/Error");
        app.UseHsts();
    }
    
    app.UseHttpsRedirection();
    
    app.UseBlazorFrameworkFiles();
    app.UseStaticFiles();
    
    app.UseRouting();
    
    app.MapRazorPages();
    app.MapControllers();
    app.MapFallbackToFile("index.html");
    
    app.Run();
    
    0 回复  |  直到 3 年前
        1
  •  0
  •   marc_s MisterSmith    3 年前

    为了在ASP。NET核心Web API,您需要替换:

    builder.Services.AddControllersWithViews();
    

    ( 这是为ASP。NET核心MVC-其中有带视图的控制器 )

    具有

    builder.Services.AddControllers();
    

    以启用具有基于属性的路由的Web API控制器。