【问题标题】:How to use a providers from another solution .Net Core?如何使用来自另一个解决方案.Net Core 的提供者?
【发布时间】:2021-06-04 00:08:45
【问题描述】:

这是我的解决方案

public class HomeController : Controller
    {
        private readonly IEventProvider _eventProvider;

        public HomeController(IEventProvider eventProvider)
        {
            _eventProvider = eventProvider ?? throw new ArgumentNullException(nameof(eventProvider));
        }

        public Task<List<EventModel>> Index()
        {
            return this._eventProvider.GetEvents(10, 1, 0, null, null, null);
        }
    }
namespace WebApplication1
{
    public class Startup
    {
        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
        }

        public IConfiguration Configuration { get; }

        public void ConfigureServices(IServiceCollection services)
        {
            services.AddDbContext<ApplicationDbContext>();

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

            ...

            services.AddScoped<ITwoFactorProvider, TwoFactorProvider>();
            services.AddScoped<IEmailProvider, EmailProvider>();
            services.AddScoped<IProfileProvider, ProfileProvider>();
            services.AddScoped<IEventProvider, EventProvider>();
        }
        
        ...
    }
}

如果我尝试从控制器联系提供商,则会出现错误 我是初学者所以不要严格判断

[在此处输入图片描述][3]

请告诉我如何解决这个问题

【问题讨论】:

    标签: asp.net asp.net-core .net-core asp.net-core-mvc


    【解决方案1】:

    如我所见,您在命名空间 WebApplication1 中注册了 IEventProvider。但是您的 HomeController 位于 GoldishCMS 项目中。尝试将您的控制器移动到正确的项目中,并在那里注册部门。 并将 services.AddControllers() 添加到 Startup.cs 中

    【讨论】:

    • Не вариант, так как я хочу сделать два проекта, которые будут вызывать провайдеры из WebApplication1 (в дальнейшем переиме В данном случаи, я хотел сделать WebApplication1 как DateLayer и его дёргать с разных проектов
    【解决方案2】:

    您必须在 GoldishCMS 项目启动中注册 IEventProvider。就像您在 WebApplication1 项目中所做的那样。

    只需将下面的代码添加到 GoldishCMS 中的 Startup.cs;

       ...
       services.AddScoped<IEventProvider, EventProvider>();
       ...
    

    但是你可以阅读更多关于Dependency InjectionIoC的文章。

    祝你有美好的一天。

    【讨论】:

    • 我试过这个,但没有帮助ImplementationType: WebApplication1.Providers.EventProvider': 尝试激活时无法解析类型“GoldishCMS.Context.ApplicationDbContext”的服务..."
    • 你的 EventProvider 使用 ApplicationDbContext 吗?
    • 是的,在提供程序中我访问上下文并获取数据
    • 所以,你也必须在 GoldishCMS 项目中注册 ApplicationDbContext。
    猜你喜欢
    • 1970-01-01
    • 2011-06-26
    • 1970-01-01
    • 2019-10-05
    • 2022-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多