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

2022-10-12,,,,

今天在学.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控制器方法

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

 

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

下载本文的Word格式文档,以方便收藏与打印。