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


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

兩種控制器使用的方法不一樣,所以不能混淆使用

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM