.NET Core MVC 應用拋出依賴注入錯誤:啟動期間無法解析服務類型
在 .NET Core MVC 應用中實現依賴注入和倉儲模式時,可能會遇到以下錯誤:
<code>InvalidOperationException: Unable to resolve service for type 'WebApplication1.Data.BloggerRepository' while attempting to activate 'WebApplication1.Controllers.BlogController'.</code>
此錯誤表示應用程式無法建立 BlogController 實例,因為它無法解析 BloggerRepository 的依賴項。
問題分析
涉及以下組件:
在 Startup.cs 檔案中,您已註冊 IBloggerRepository 的依賴項:
services.AddScoped<IBloggerRepository, BloggerRepository>();
這表示每當應用程式需要 IBloggerRepository 時,它都會建立一個 BloggerRepository 實例並將其註入。
但是,BlogController 在其建構函式中直接請求具體的 BloggerRepository 類別:
public BlogController(BloggerRepository repository)
這會導致依賴注入容器失敗,因為它不知道如何在請求其介面時建立特定類別的實例。
解
要解決此問題,請將 BlogController 的建構子變更為接受 IBloggerRepository 介面:
public BlogController(IBloggerRepository repository)
透過接受接口,依賴注入容器現在可以成功解析依賴項並建立 BlogController 實例。
其他說明
在某些情況下,可能需要為某些類型使用自訂註冊方法。例如,要註冊 IHttpContextAccessor 服務,可以使用:
services.AddHttpContextAccessor();
始終查閱外部 NuGet 套件的文件以確定是否需要自訂註冊。
以上是為什麼我的 .NET Core MVC 應用程式在使用依賴注入時拋出「無法解析服務」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!