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