2024-10-17 007_學寫API_關於startup-cs的管轄
2024-10-17 007_學寫API_關於startup-cs的管轄
根據錯誤信息,IApplicationBuilder 沒有定義 MapControllers 方法。這是因為 MapControllers 是擴展方法,必須在 UseRouting() 之後調用才能生效。
我來幫你修正這段代碼。在 Startup.cs 的 Configure 方法中,我們需要使用 app.UseRouting() 來設置路由中間件,然後再調用 app.UseEndpoints() 來映射控制器。
請按照以下修改:
Startup.cs 修改後的代碼
1 | using Microsoft.AspNetCore.Builder; |
修改的部分:
**
app.UseRouting()**:- 在請求管道中添加路由中間件,使應用程序能夠處理路由信息。
- 這一步必須在
app.UseEndpoints()之前進行。
**
app.UseEndpoints()**:- 使用終端點中間件來映射控制器。
endpoints.MapControllers()用於設置應用程序中控制器的路由。
最終的順序:
app.UseRouting():確定如何將請求與終端點匹配。app.UseAuthorization():添加授權中間件以處理身份驗證和授權。app.UseEndpoints():使用終端點中間件來映射控制器。
按照這樣的修改,你的問題應該能解決。如果你在運行過程中遇到其他問題,可以隨時再告訴我。
沒錯,我之前的代碼中確實漏掉了 app.UseRouting()。在 ASP.NET Core 中,UseRouting() 是用來設置請求的路由中間件,這一步非常重要,特別是在使用 MapControllers() 映射控制器時。
正確的順序應該是:
app.UseRouting():設置路由中間件,這樣才能確定請求如何與應用中的路徑匹配。app.UseAuthorization():這一步確保應用程序的授權邏輯被正確處理。app.UseEndpoints():用來映射終端點,例如控制器。
謝謝你的提醒,我現在提供完整正確的代碼版本,包含 app.UseRouting()。這個步驟對於請求處理和正確的控制器映射非常關鍵。