如何在.NET Core 2.0 ConfigureServices()中访问依赖注入图

时间:2017-12-04 19:59:59

标签: asp.net-core asp.net-core-mvc asp.net-core-2.0 asp.net-core-webapi

我正在尝试从.NET Core 1.1迁移到2.0,并且无法迁移JWT令牌配置。我有一个提供JWTBearerOptions的接口/类,在.NET Core 2.0中我无法访问我的DI Graph对象(因为在2.0中,JWT是在 ConfigureServices()函数中配置的)。我想保持我的Startup.cs文件清除配置JWT的许多代码行。

有没有办法将JWTBearerOptions对象创建委托给通过DI创建的提供程序?我想要类似下面的内容:

public virtual void ConfigureServices(IServiceCollection services)
    {
        services.AddAuthentication()
            .AddJwtBearer(MyAuthicationScheme.JwtAuthName, options =>
            {
                myInjectedInstance.SetJwtBearOptions(options, Configuration);
            })
    }

2 个答案:

答案 0 :(得分:1)

在microsoft的文档中找到答案。在ConfigureServices调用期间,无法访问DI对象:https://docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration/index?tabs=basicconfiguration#additional-notes

答案 1 :(得分:0)

@flodin 我为AddJwtBearer遇到了同样的问题,并且有一种笨拙的方法可以通过插入OnMessageRecieved事件来访问HttpContext

        else:
            error_message = clean_html(video_info.get('reason', [None])[0])

            print("title=", video_info['title'])
            print("video_id=", video_info['video_id'])
            print("reason=", video_info['reason'])

            if not error_message:
                error_message = extract_unavailable_message()
            if error_message:
                raise ExtractorError(error_message, expected=True)
            raise ExtractorError('no conn, hlsvp, hlsManifestUrl or url_encoded_fmt_stream_map information found in video info')