今天在學.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控制器方法
兩種控制器使用的方法不同,因此不能混淆使用