首頁 > 後端開發 > C++ > 為什麼我的 .NET Core MVC 應用程式在使用依賴注入時拋出「無法解析服務」?

為什麼我的 .NET Core MVC 應用程式在使用依賴注入時拋出「無法解析服務」?

Barbara Streisand
發布: 2025-01-23 17:51:08
原創
192 人瀏覽過

Why Does My .NET Core MVC App Throw

.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 的依賴項。

問題分析

涉及以下組件:

  • 倉儲: IBloggerRepository 介面及其實作 BloggerRepository。
  • 控制器: 使用 BloggerRepository 的 BlogController。
  • Startup.cs: 註冊依賴注入服務的設定。

在 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中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板