.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 중국어 웹사이트의 기타 관련 기사를 참조하세요!