gpt4 book ai didi

c# - 在不使用 RouteAttribute 的情况下使用 ApiControllerAttribute

转载 作者:太空狗 更新时间:2023-10-29 20:52:37 25 4
gpt4 key购买 nike

在 ASP.NET Core (v 2.1.5) 中,您可以创建 Controller ,而无需让它们继承 Controller 类(如您所知)。如果这样做,您必须使用 RouteAttribute 来定义您的路线。但是,我感兴趣的是我们是否可以将隐式路由(而不是属性路由)与 ApiController 属性一起使用。示例:在 Startup.cs 中具有此隐式路由:

app.UseMvc(routeBuilder => 
{
routeBuilder.MapRoute("api_default", "{controller}/{action}/{id?}");
});

还有这个Cotroller

[ApiController]
public class ValuesController
{
[HttpGet]
public string Get(int id) => id.ToString();
}

会抛出这个异常:

InvalidOperationException: Action 'TestApi.Controllers.ValuesController.Get' does not have an attribute route. Action methods on controllers annotated with ApiControllerAttribute must be attribute routed.

有没有办法避免异常?

最佳答案

But, I'm interested if we can use implicit routing (and not attribute routing) along with ApiController attribute together.

根据官方文档

Attribute routing becomes a requirement. For example:

[Route("api/[controller]")]
[ApiController]
public class ValuesController

Actions are inaccessible via conventional routes defined in UseMvc or by UseMvcWithDefaultRoute in Startup.Configure.

注意:强调我的

引用 Build web APIs with ASP.NET Core: Attribute routing requirement

关于c# - 在不使用 RouteAttribute 的情况下使用 ApiControllerAttribute,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53037126/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com