Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 向AuthorizationHandler注入自定义类时出现异常_C#_Asp.net Core - Fatal编程技术网

C# 向AuthorizationHandler注入自定义类时出现异常

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

我有一个自定义策略来检查一些授权

Startup.cs:

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
{
    ...