我实现了一个与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;没有注册。
答案 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>