.NET Core 3終結點不能映射控制器

今天在學.net core的時候發現了一個問題,終結點死活映射不了本身添加的控制器,後通過研究發現解決方法,可能這個問題不該該叫作問題,但是我是初學者,就把這個問題給拎出來。本人開發環境 VS2019+.Net Core 3.1,問題重現過程:app

1.新建Web Core項目,選擇空項目async

2.新建文件夾「Controller」,右鍵該文件夾->添加->控制器->API控制器-空->設置名稱爲「HomeController.cs」函數

3.修改路由特性爲 [Route("[controller]")] spa

4.在該路由器類下添加Index函數,返回Test字符串.net

5.修改Startup類中Configure函數:code

原代碼:blog

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控制器方法

兩種控制器使用的方法不同,因此不能混淆使用

相關文章
相關標籤/搜索