在我的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 ;
}
}
当我try 将请求发送到
https://mydomain/api/blog/GetPagedBlogs
它不会达到这个动作方法.但如果我只用[HttpGet]
替换[HttpGet("GetPagedBlogs")]
,并向https://mydomain/api/blog
发送请求,那么它就会到达action方法.
我遗漏了什么?
我使用的是.NET7,这是我的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();