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()
。這個步驟對於請求處理和正確的控制器映射非常關鍵。