C# 向AuthorizationHandler注入自定义类时出现异常
我有一个自定义策略来检查一些授权 Startup.cs:C# 向AuthorizationHandler注入自定义类时出现异常,c#,asp.net-core,C#,Asp.net Core,我有一个自定义策略来检查一些授权 Startup.cs: public void ConfigureServices(IServiceCollection services) { services.AddTransient<IPermissionsManager, PermissionsManager>(); services.AddAuthorization(options => { options.AddPolicy("HasPer
public void ConfigureServices(IServiceCollection services)
{
services.AddTransient<IPermissionsManager, PermissionsManager>();
services.AddAuthorization(options =>
{
options.AddPolicy("HasPermission",
policy => policy.Requirements.Add(new CheckProjectAccessLevelRequirement()));
});
services.AddSingleton<IAuthorizationHandler, CheckProjectAccessLevelHandler>();
}
没有PermissionsManager的注入,一切都能按预期工作
我错过了什么?您注册了
IPermissionManager
(使用services.AddTransient();
)以解决问题,因此您也应该将ctor参数更改为IPermissionManager
:
public CheckProjectAccessLevelHandler(
AuthHandlersContext context,
UserManager<ApplicationUser> userManager,
IPermissionsManager permissionsManager) // <-- here
{
...
公共CheckProjectAccessLevelHandler(
AuthHandlersContext上下文,
用户管理器用户管理器,
IPermissionsManager permissionsManager)//您已注册了IPermissionManager
(使用services.AddTransient();
)以使其可解析,因此您还应将ctor参数更改为IPermissionsManager
:
public CheckProjectAccessLevelHandler(
AuthHandlersContext context,
UserManager<ApplicationUser> userManager,
IPermissionsManager permissionsManager) // <-- here
{
...
公共CheckProjectAccessLevelHandler(
AuthHandlersContext上下文,
用户管理器用户管理器,
IPermissionsManager许可证管理员)//
public CheckProjectAccessLevelHandler(
AuthHandlersContext context,
UserManager<ApplicationUser> userManager,
IPermissionsManager permissionsManager) // <-- here
{
...