【问题标题】:Failed to call service from aspnetboilerplate asp.net-core project controller无法从 aspnetboilerplate asp.net-core 项目控制器调用服务
【发布时间】:2019-04-29 12:22:00
【问题描述】:

Aspnet 核心样板框架的工作遇到了一个问题,我的控制器无法调用服务。

应用类库包含IEmployeeServiceEmployeeService,如何从我的EmployeeController中调用它们。

服务

    public interface IEmployeeService
    {
        int CreateEmployee(CreateEmployeeDto data);
        IEnumerable<EmployeeListDto> GetEmployeeList();

    }
 public class EmployeeService : IEmployeeService
    {
}

控制器

    [AbpMvcAuthorize]
    public class EmployeeController : HRISControllerBase
    {


        private readonly IEmployeeService _employeeService;

        public EmployeeController(           
            IEmployeeService employeeService
           )
        {

            _employeeService = employeeService;           
        }

        public ActionResult Index()
        {
            return View();
        }
}

注意:项目是否需要在 Startup.cs 文件的 ConfigureServices 中进行配置。

【问题讨论】:

  • 查看@aaron 答案。你必须用ITransientDependency注册你的服务

标签: c# aspnetboilerplate asp.net-boilerplate


【解决方案1】:

您需要在ConfigureServices方法中注册它:

public void ConfigureServices(IServiceCollection services)
{
    services.AddTransient<IEmployeeService, EmployeeService>();
}

【讨论】:

  • .net core项目DI的这个过程想知道如何在aspnetboilerplate asp.net-core项目控制器上使用DI。
  • @shamim - 最后一条评论表明对 DI 的工作方式存在误解,或者原始问题的解释不明确
【解决方案2】:

实现ITransientDependency

public class EmployeeService : IEmployeeService, ITransientDependency
{
    // ...
}

来自https://aspnetboilerplate.com/Pages/Documents/Dependency-Injection#helper-interfaces

ASP.NET Boilerplate 提供 ITransientDependencyIPerWebRequestDependencyISingletonDependency 接口作为快捷方式。

【讨论】:

    【解决方案3】:

    您可以使用在 Startup.cs class.here asp..net core 提供 inbuild DI 中注册您的类。

    【讨论】:

      【解决方案4】:

      根据docs

      “ASP.NET Boilerplate 自动注册所有存储库、域服务、应用程序服务”

      因此,您需要做的就是将您的 IEmployeeService 更改为从 IApplicationService 继承:

      public interface IEmployeeService : IApplicationService
      {
          int CreateEmployee(CreateEmployeeDto data);
          IEnumerable<EmployeeListDto> GetEmployeeList();
      }
      

      【讨论】:

        猜你喜欢
        • 2016-11-08
        • 1970-01-01
        • 2021-09-19
        • 2014-05-12
        • 2019-01-18
        • 2016-04-30
        • 1970-01-01
        • 1970-01-01
        • 2021-11-29
        相关资源
        最近更新 更多