Home >Backend Development >C++ >Why Does My .NET Core MVC App Throw 'Unable to Resolve Service' When Using Dependency Injection?
.NET Core MVC app throws dependency injection error: Unable to resolve service type during activation
When implementing dependency injection and warehousing patterns in .NET Core MVC applications, you may encounter the following errors:
<code>InvalidOperationException: Unable to resolve service for type 'WebApplication1.Data.BloggerRepository' while attempting to activate 'WebApplication1.Controllers.BlogController'.</code>
This error indicates that the application cannot create a BlogController instance because it cannot resolve the BloggerRepository's dependencies.
Problem Analysis
The following components are involved:
In the Startup.cs file, you have registered the dependency of IBloggerRepository:
<code class="language-csharp">services.AddScoped<IBloggerRepository, BloggerRepository>();</code>
This means that whenever an application requires an IBloggerRepository, it creates a BloggerRepository instance and injects it.
However, BlogController directly requests the concrete BloggerRepository class in its constructor:
<code class="language-csharp">public BlogController(BloggerRepository repository)</code>
This causes the dependency injection container to fail because it does not know how to create an instance of the concrete class when its interface is requested.
Solution
To resolve this issue, change the BlogController's constructor to accept the IBloggerRepository interface:
<code class="language-csharp">public BlogController(IBloggerRepository repository)</code>
By accepting the interface, the dependency injection container can now successfully resolve dependencies and create BlogController instances.
Other instructions
In some cases it may be necessary to use custom registration methods for certain types. For example, to register the IHttpContextAccessor service, you would use:
<code class="language-csharp">services.AddHttpContextAccessor();</code>
Always consult the documentation for external NuGet packages to determine whether custom registration is required.
The above is the detailed content of Why Does My .NET Core MVC App Throw 'Unable to Resolve Service' When Using Dependency Injection?. For more information, please follow other related articles on the PHP Chinese website!