首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用ApiControllerAttribute而不使用RouteAttribute

使用ApiControllerAttribute而不使用RouteAttribute
EN

Stack Overflow用户
提问于 2018-10-28 23:52:17
回答 2查看 32.2K关注 0票数 22

在ASP.NET核心(v2.1.5)中,您可以创建控制器,而无需继承Controller类(如您所知)。如果您这样做了,您必须使用RouteAttribute来定义您的路由。但是,我感兴趣的是,我们是否可以一起使用隐式路由(而不是属性路由)以及ApiController属性。示例:在Startup.cs中使用此隐式路由

代码语言:javascript
复制
app.UseMvc(routeBuilder => 
{
    routeBuilder.MapRoute("api_default", "{controller}/{action}/{id?}");
});

而这个Cotroller

代码语言:javascript
复制
[ApiController]
public class ValuesController 
{
    [HttpGet] 
    public string Get(int id) => id.ToString();
}

将引发此异常:

InvalidOperationException:动作'TestApi.Controllers.ValuesController.Get‘没有属性路由。对带有ApiControllerAttribute注释的控制器的操作方法必须是属性路由。

有什么办法可以避免例外吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-10-29 00:05:16

但是,我感兴趣的是,我们是否可以一起使用隐式路由(而不是属性路由)以及ApiController属性。

根据官方文件

属性路由成为一种需求。例如: 路由(“api/[控制器]”)公共类ValuesController 操作通过UseMvc中定义的传统路由或Startup.Configure.中的UseMvcWithDefaultRoute无法访问。

注:emphasis

参考使用ASP.NET核心构建web :属性路由需求

票数 37
EN

Stack Overflow用户

发布于 2022-10-29 06:38:53

也可以使用

路由(“api/VillaAPI”)

在控制器名称硬

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53037126

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档