Autofac和范围问题

时间:2017-08-11 11:19:27

标签: c# asp.net-web-api autofac

好的,这开始让我感到紧张。我希望我从未开始使用Autofac,它使用起来太难了。

我创建了一个模块,我已按以下方式进行设置:

  • 已设置所有不需要数据库交互的服务 作为单身人士。这些通常是辅助类,如 加密提供商
  • 出于显而易见的原因,注入控制器的所有服务都已设置为 InstancePerRequest
  • 注入控制器服务的任何服务都已设置为 InstancePerDependency

我认为这是做事的正确方法。理论上它应该有效。 现在,出现了“并发症”。

  • 首先, DbContext ,我已查看并按照上述规则将其设置为 InstancePerDependency
  • 然后我设置了 OAuthProvider,UserManager和RefreshTokenService 。我上面的规则会将后者2设置为 InstancePerRequest ,但 Startup.cs 需要RefreshTokenService和OAuthProvider(其中注入了UserManager):

    var config = new HttpConfiguration();
    var scope = config.DependencyResolver.GetRootLifetimeScope();
    
    // Get our providers
    var authProvider = scope.Resolve<OAuthProvider>();
    var refreshTokenProvider = scope.Resolve<IAuthenticationTokenProvider>();
    
    // Create our OAuth options
    return new OAuthAuthorizationServerOptions()
    {
        AllowInsecureHttp = true, // TODO: Remove this line
        TokenEndpointPath = new PathString("/oauth/access_token"),
        AccessTokenExpireTimeSpan = TimeSpan.FromDays(1),
        AccessTokenFormat = new Business.Authentication.JwtFormat("http://localhost:62668"),
        Provider = authProvider,
        RefreshTokenProvider = refreshTokenProvider
    };
    

我确实将所有三个设置为 InstancePerLifetimeScope ,但由于 UserManager 而导致问题。 所以我然后将它们设置为 InstancePerDependency 并编译了所有内容,但我发现没有任何东西在保存......

在我的经理告诉我删除Autofac之前,我真的需要弄清楚如何做到这一点。那么,那里的任何人都可以告诉我如何注册3个有问题的服务吗?

0 个答案:

没有答案