找不到支持服务的组件Abp.Zero.Configuration.IAbpZeroConfig

时间:2018-03-05 09:00:50

标签: asp.net-mvc aspnetboilerplate

我实现了一个与aspnetboilerplate document完全相同的自定义ExternalLogin:

public class MyExternalAuthSource : DefaultExternalAuthenticationSource<Tenant, User>, ITransientDependency
{
    public override string Name
    {
        get { return "MyCustomSource"; }
    }

    public override Task<bool> TryAuthenticateAsync(string userNameOrEmailAddress, string plainPassword, Tenant tenant)
    {

    }
}

我将其注册为:

public class ImmenseWebModule : AbpModule
{
    public override void PreInitialize()
    {
        Configuration.Modules.Zero().UserManagement.ExternalAuthenticationSources.Add<MyExternalAuthSource>();
    }
}

但在运行项目后,我与下面的例外交叉:

  

找不到支持Abp.Zero.Configuration.IAbpZeroConfig服务的组件

当我添加Abp.Zero.Common.dll时,我会收到以下错误:

  

类型&#39; DefaultExternalAuthenticationSource&#39;存在于&#39; Abp.Zero.Common,Version = 3.4.0.0,Culture = neutral,PublicKeyToken = null&#39;和&#39; Abp.Zero,版本= 1.3.1.0,文化=中立,PublicKeyToken = null&#39;

如果我删除Abp.Zero.dll,我会另外例外。

项目类型为ASP.Net MVC 5

任何帮助都会得到真正的赞赏。

UPDATE1:

定义如下的绑定后:

<dependentAssembly>
    <assemblyIdentity name="System.Net.Http" publicKeyToken="B03F5F7F11D50A3A" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-4.2.0.0" newVersion="4.2.0.0" />
</dependentAssembly>

我得到了例外:

  

无法创建组件&Abff.BackgroundJobs.BackgroundJobStore&#39;因为它有依赖性来满足。

     

&#39; Abp.BackgroundJobs.BackgroundJobStore&#39;正在等待以下依赖项:    - 服务&#39; Abp.Domain.Repositories.IRepository`2 [[Abp.BackgroundJobs.BackgroundJobInfo,Abp,Version = 3.4.0.0,Culture = neutral,PublicKeyToken = null],[System.Int64,mscorlib,Version = 4.0 .0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089]]&#39;没有注册。

所以经过一些搜索,我得出这个结论,我必须实现IRepository并将其注册为(只是为了运行):

public interface ISampleBlogRepository<TEntity, TPrimaryKey> : IRepository<TEntity, TPrimaryKey>
    where TEntity : class, IEntity<TPrimaryKey>
{

}

并注册:

IocManager.IocContainer.Register(Component.For(
                typeof(IRepository<>))
                    .ImplementedBy(typeof(ISampleBlogRepository<>)).LifestyleTransient().Named("IRepositoryImplementation"));
            IocManager.IocContainer.Register(Component.For(
                typeof(IRepository<,>))
                    .ImplementedBy(typeof(ISampleBlogRepository<,>)).LifestyleTransient().Named("IRepositoryOfPrimaryKeyImplementation"));

但不幸的是我遇到了新问题:

  

对象引用未设置为对象的实例。

和Stack的一部分:

  

[NullReferenceException:对象引用未设置为对象的实例。]      D:\ Github \ aspnetboilerplate \ src \ Abp \ Domain \ Uow \ UnitOfWorkDefaultOptionsExtensions.cs中的Abp.Domain.Uow.UnitOfWorkDefaultOptionsExtensions.GetUnitOfWorkAttributeOrNull(IUnitOfWorkDefaultOptions unitOfWorkDefaultOptions,MethodInfo methodInfo):11      D:\ Github \ aspnetboilerplate \ src \ Abp \ Domain \ Uow \ UnitOfWorkInterceptor.cs中的Abp.Domain.Uow.UnitOfWorkInterceptor.Intercept(IInvocation调用):32      Castle.DynamicProxy.AbstractInvocation.Proceed()+ 443      Castle.Proxies.IRepository 2Proxy_1.GetAllListAsync(Expression 1个谓词)+155      D:\ Github \ aspnetboilerplate \ src \ Abp.Zero.Common \ Configuration \ SettingStore.cs中的Abp.Configuration.d__3.MoveNext():40      System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()+31

为什么它很复杂,我在每一步都遇到了新的异常。

UPDATE2:

如果我按bg禁用Configuration.BackgroundJobs.IsJobExecutionEnabled = false;个工作,我会收到另一个例外情况,如下所示:

  

无法创建组件&Abff.MultiTenancy.TenantCache 2 [[x.Web.x.Core.Tenant,x.Web.x.Core,Version = 1.0.0.0,Culture = neutral, PublicKeyToken = null],[MARCO.Web.ImmenseLib.Core.User,x.Web.x.Core,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null]]&#39;因为它有依赖性来满足。

     

Abp.MultiTenancy.TenantCache 2 [[x.Web.x.Core.Tenant,x.Web.x.Core,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null],[x.Web.x .Core.User,x.Web.x.Core,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null]]&#39;正在等待以下依赖项:    - 服务&#39; Abp.Domain.Repositories.IRepository 1 [[x.Web.x.Core.Tenant,x.Web.x.Core,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null]]& #39;没有注册。

1 个答案:

答案 0 :(得分:1)

[DependsOn(typeof(AbpZeroCommonModule))]添加到您的模块中:

[DependsOn(typeof(AbpZeroCommonModule))]
public class ImmenseWebModule : AbpModule
{
    // ...
}
  

方法&#39; ExecuteActionFilterAsync&#39;在类型&#39; Abp.WebApi.Validation.AbpApiValidationFilter&#39;来自汇编&#39; Abp.Web.Api,Version = 3.4.0.0,Culture = neutral,PublicKeyToken = null&#39;没有实施。

添加这些绑定:AbpCompanyName.AbpProjectName.WebMpa/Web.config#L46-L261

问题#2494中提到此绑定有助于:

<dependentAssembly>
    <assemblyIdentity name="System.Net.Http" publicKeyToken="B03F5F7F11D50A3A" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-4.2.0.0" newVersion="4.2.0.0" />
</dependentAssembly>