欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

.NET Core 3终结点不能映射控制器

程序员文章站 2022-05-29 09:17:39
今天在学.net core的时候发现了一个问题,终结点死活映射不了自己添加的控制器,后经过研究发现解决方法,可能这个问题不应该叫做问题,可是我是初学者,就把这个问题给拎出来。本人开发环境 VS2019+.Net Core 3.1,问题重现过程: 1.新建Web Core项目,选择空项目 2.新建文件 ......

今天在学.net core的时候发现了一个问题,终结点死活映射不了自己添加的控制器,后经过研究发现解决方法,可能这个问题不应该叫做问题,可是我是初学者,就把这个问题给拎出来。本人开发环境 vs2019+.net core 3.1,问题重现过程:

1.新建web core项目,选择空项目

2.新建文件夹“controller”,右键该文件夹->添加->控制器->api控制器-空->设置名称为“homecontroller.cs”

3.修改路由特性为 [route("[controller]")] 

4.在该路由器类下添加index函数,返回test字符串

5.修改startup类中configure函数:

原代码:

app.useendpoints(endpoints =>
{
  endpoints.mapget("/", async context =>
  {
    await context.response.writeasync("hello world!");
  });
});    

修改后的代码:

app.useendpoints(endpoints =>
{
  endpoints.mapcontrollerroute("default", "{controller=home}/{action=index}/{id?}");
});

运行程序显示404

然后将homecontroller中的两个特性删除就可以正常运行

原因是api控制器和mvc控制器是不一样的

mvc控制器通过url选择action方法

api控制器根据http请求方法的不同来选择api控制器方法

两种控制器使用的方法不一样,所以不能混淆使用