首頁 > 後端開發 > C++ > 為什麼我的 .NET Core MVC 應用程式無法將註冊的服務注入控制器?

為什麼我的 .NET Core MVC 應用程式無法將註冊的服務注入控制器?

Susan Sarandon
發布: 2025-01-23 17:47:09
原創
241 人瀏覽過

Why Does My .NET Core MVC App Fail to Inject a Registered Service into a Controller?

.NET Core MVC 應用中控制器依賴注入失敗的解決方法

在您的 .NET Core MVC 應用程式中,嘗試將 BloggerRepository 注入 BlogController 時出現錯誤,提示訊息如下:

<code>InvalidOperationException: Unable to resolve service for type 'WebApplication1.Data.BloggerRepository' while attempting to activate 'WebApplication1.Controllers.BlogController'.</code>
登入後複製

讓我們分析程式碼來理解這個錯誤:

倉儲層:

<code>public interface IBloggerRepository { ... }
public class BloggerRepository : IBloggerRepository { ... }</code>
登入後複製

控制器:

<code>public class BlogController : Controller
{
    private readonly IBloggerRepository _repository;
    public BlogController(BloggerRepository repository) { ... }
}</code>
登入後複製

Startup.cs:

<code>services.AddScoped<IBloggerRepository, BloggerRepository>();</code>
登入後複製

錯誤表示依賴注入系統無法提供 BlogController 建構函 BloggerRepository 實例。

問題在於控制器期望 BloggerRepository 的具體類,而依賴注入容器卻被告知將介面 IBloggerRepository 與具體實作註冊。

解:

為了解決這個問題,修改控制器的建構函數,使其接受介面而不是具體類別:

<code>public BlogController(IBloggerRepository repository) { ... }</code>
登入後複製

透過這種修改,依賴注入容器現在可以成功解析依賴項並提供 IBloggerRepository 的實例,該實例將自動實例化為 BloggerRepository

注意: 不同的包可能有自己的服務註冊方式。建議始終查閱其文件以獲取具體的指導。

以上是為什麼我的 .NET Core MVC 應用程式無法將註冊的服務注入控制器?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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