为什么我在启动应用程序时遇到同样的错误? "InvalidOperationException: Unable to resolve service"

Why I am Getting Same Error While Starting Application ? "InvalidOperationException: Unable to resolve service"

错误=>

处理请求时出现未处理的异常。 InvalidOperationException:尝试激活 'BookReadingEventWebApplication.Controllers.HomeController' 时无法解析类型 'Business_Logic_Layer.Home.IHomeBLL' 的服务。 Microsoft.Extensions.DependencyInjection.ActivatorUtilities.GetService(IServiceProvider sp, Type type, Type requiredBy, bool isDefaultParameterRequired)

Startup.cs =>

 public void ConfigureServices(IServiceCollection services)
        {
            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_3_0);
            services.AddAutoMapper(typeof(Startup));
            services.AddDbContext<ApplicationDbContext>(options =>
            options.UseSqlServer(
                Configuration.GetConnectionString("DefaultConnection")));

            services.AddIdentity<IdentityUser, IdentityRole>()
                .AddEntityFrameworkStores<ApplicationDbContext>();

            services.AddScoped<IAccountRepository, AccountRepository>();

            services.AddControllersWithViews();

        }


  [1]: https://i.stack.imgur.com/39YUb.png


**HomeController** =>

 public class HomeController : Controller
    {
        private readonly ILogger<HomeController> _logger;

        public readonly IHomeBLL _BLL;

        public HomeController( ILogger<HomeController> logger, IHomeBLL BLL)
        {
            _logger = logger;
            _BLL = BLL;
        }


        public IActionResult Index()
        {
            var list = _BLL.GetAllEvents();
            return View(list);
        }


**HomeBLL** =>

public class HomeBLL : IHomeBLL
    {
        private Data_Access_Layer.HomeDAL _DAL;

        public HomeBLL(Data_Access_Layer.HomeDAL DAL)
        {
            _DAL = DAL;
        }

        public List<BookReadingEventModel> GetAllEvents()
        {
            return _DAL.GetAllEvents();
        }
    }

**IHomeBLL** =>

public interface IHomeBLL
    {
        public List<BookReadingEventModel> GetAllEvents();
    }



您需要在 ConfigureServices 中注册 IHomeBLL 服务。

例如:

// or AddSingleton or AddTransient
services.AddScoped<IHomeBLL, HomeBLL>();

但是,由于 HomeBLL 依赖于 (Data_Access_Layer.HomeDAL DAL),您需要遵循此链。

正在注册 HomeDAL

您没有显示 HomeDAL 需要创建的内容,以下是猜测。

这里有一些选项,其中一个可能适用于您的设置。

如果需要创建HomeDAL 'by hand':

// Create 
HomeDAL homeDAL = ...;
services.AddScoped<IHomeBLL>(provider => new HomeBLL(homeDAL));

请注意,如果 HomeDAL 实现一个接口 IHomeDAL 并且 HomeBLL 依赖于 IHomeDAL 可能会更好。然后,如果 HomeDAL 没有任何依赖项,您可以通过以下方式注册它们:

// or AddSingleton or AddTransient
services.AddScoped<IHomeDAL, HomeDAL>();
services.AddScoped<IHomeBLL, HomeBLL>();