扩展 UserManager 导致 ObjectDisposedException
Extending UserManager results in ObjectDisposedException
如果我扩展生成的 aspnetboilerplate UserManager class(从启动模板),每当我使用 RoleManager 时,我都会收到 ObjectDisposedException 异常。我认为这与依赖注入有关。有什么明显的我做错了(或不应该做的)吗?
这是 UserManager class 定义(使用我在底部添加的方法)
namespace MyProject.Authorization.Users
{
public class UserManager : AbpUserManager<Role, User>
{
public UserManager(
RoleManager roleManager,
UserStore store,
IOptions<IdentityOptions> optionsAccessor,
IPasswordHasher<User> passwordHasher,
IEnumerable<IUserValidator<User>> userValidators,
IEnumerable<IPasswordValidator<User>> passwordValidators,
ILookupNormalizer keyNormalizer,
IdentityErrorDescriber errors,
IServiceProvider services,
ILogger<UserManager<User>> logger,
IPermissionManager permissionManager,
IUnitOfWorkManager unitOfWorkManager,
ICacheManager cacheManager,
IRepository<OrganizationUnit, long> organizationUnitRepository,
IRepository<UserOrganizationUnit, long> userOrganizationUnitRepository,
IOrganizationUnitSettings organizationUnitSettings,
ISettingManager settingManager)
: base(
roleManager,
store,
optionsAccessor,
passwordHasher,
userValidators,
passwordValidators,
keyNormalizer,
errors,
services,
logger,
permissionManager,
unitOfWorkManager,
cacheManager,
organizationUnitRepository,
userOrganizationUnitRepository,
organizationUnitSettings,
settingManager)
{
}
public void GoBoom()
{
var role = RoleManager.Roles.FirstOrDefault();
}
}
}
用法(此处直接注入并在剃刀视图上使用)
@inject MyProject.Authorization.Users.UserManager _userManager
@{
_userManager.GoBoom();
}
添加 [UnitOfWork]
属性并使其成为 virtual
方法:
[UnitOfWork]
public virtual void GoBoom()
{
...
}
参见:UnitOfWork Attribute Restrictions
You can use UnitOfWork attribute for:
- All public or public virtual methods for classes that are used over an interface (Like an application service used over a service interface).
- All public virtual methods for self-injected classes (Like MVC Controllers and Web API Controllers).
- All protected virtual methods.
如果我扩展生成的 aspnetboilerplate UserManager class(从启动模板),每当我使用 RoleManager 时,我都会收到 ObjectDisposedException 异常。我认为这与依赖注入有关。有什么明显的我做错了(或不应该做的)吗?
这是 UserManager class 定义(使用我在底部添加的方法)
namespace MyProject.Authorization.Users
{
public class UserManager : AbpUserManager<Role, User>
{
public UserManager(
RoleManager roleManager,
UserStore store,
IOptions<IdentityOptions> optionsAccessor,
IPasswordHasher<User> passwordHasher,
IEnumerable<IUserValidator<User>> userValidators,
IEnumerable<IPasswordValidator<User>> passwordValidators,
ILookupNormalizer keyNormalizer,
IdentityErrorDescriber errors,
IServiceProvider services,
ILogger<UserManager<User>> logger,
IPermissionManager permissionManager,
IUnitOfWorkManager unitOfWorkManager,
ICacheManager cacheManager,
IRepository<OrganizationUnit, long> organizationUnitRepository,
IRepository<UserOrganizationUnit, long> userOrganizationUnitRepository,
IOrganizationUnitSettings organizationUnitSettings,
ISettingManager settingManager)
: base(
roleManager,
store,
optionsAccessor,
passwordHasher,
userValidators,
passwordValidators,
keyNormalizer,
errors,
services,
logger,
permissionManager,
unitOfWorkManager,
cacheManager,
organizationUnitRepository,
userOrganizationUnitRepository,
organizationUnitSettings,
settingManager)
{
}
public void GoBoom()
{
var role = RoleManager.Roles.FirstOrDefault();
}
}
}
用法(此处直接注入并在剃刀视图上使用)
@inject MyProject.Authorization.Users.UserManager _userManager
@{
_userManager.GoBoom();
}
添加 [UnitOfWork]
属性并使其成为 virtual
方法:
[UnitOfWork]
public virtual void GoBoom()
{
...
}
参见:UnitOfWork Attribute Restrictions
You can use UnitOfWork attribute for:
- All public or public virtual methods for classes that are used over an interface (Like an application service used over a service interface).
- All public virtual methods for self-injected classes (Like MVC Controllers and Web API Controllers).
- All protected virtual methods.