在我的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();

推荐答案

为了在ASP.NET核心Web API中启用基于属性的路由,您需要替换:

builder.Services.AddControllersWithViews();

(this is for ASP.NET Core MVC - where you have controllers 使用 views)

使用

builder.Services.AddControllers();

to enable Web API controllers 使用 attribute-based routing.

Csharp相关问答推荐

如何使用C#和Graph API从Azure Directory获取用户详细信息

有没有办法把+02:00转换成TimeSpan?""

Microsoft. SQLServer. Types(106.1000.6)在try 从用户定义的类型检索值时引发异常

如何在C#中删除一个特殊字符,如"使用Regex"

如何分配对象后的class的属性?

默认情况下,.NET通用主机(Host.CreateDefaultBuilder)中是否包含UseConsoleLifetime?

为什么EventInfo.EventHandlerType返回可为空的Type值?

如何在ASP.NET Core8中启用REST应用程序的序列化?

用于管理System.Text.Json中的多态反序列化的自定义TypeInfoResolver

从另一个不同 struct 的数组创建Newtonsoft.Json.Linq.J数组

MSTest--将消息直接写入StdOut和使用TestContext有什么不同?

等待一个等待函数

同一组件的多个实例触发相同的事件处理程序

如何在Polly重试策略成功之前将HttpClient请求排队?

在同一个捕获中可以有多种类型的异常吗?

如何解决System.StackOverflowException:抛出System.StackOverflowException类型的异常.&# 39;生成随机代码时发生异常?

如何使用.NET 8.0中新的CompositeFormat类?

ASP.NET Core 8 Web API:如何添加版本控制?

在使用xUnit和Mock执行单元测试时,控制器ViewResult返回空的Model集合

与另一个对象位于同一位置的对象具有不同的变换位置