Inyección de dependencia de Autofac en la implementación de OAuthAuthorizationServerProvider

Estoy creando una aplicación Web Api y quiero usar tokens de portador para la autenticación del usuario. Implementé la lógica del token, siguiendoesta publicación y todo parece funcionar bien. NOTA: No estoy usando el proveedor de identidad ASP.NET. En cambio, he creado una entidad de usuario personalizada y servicios para ello.

 public class Startup
{
    public void Configuration(IAppBuilder app)
    {
        ConfigureOAuth(app);

        var config = new HttpConfiguration();
        var container = DependancyConfig.Register();
        var dependencyResolver = new AutofacWebApiDependencyResolver(container);
        config.DependencyResolver = dependencyResolver;

        app.UseAutofacMiddleware(container);
        app.UseAutofacWebApi(config);

        WebApiConfig.Register(config);
        app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll);
        app.UseWebApi(config);
    }

    public void ConfigureOAuth(IAppBuilder app)
    {
        var oAuthServerOptions = new OAuthAuthorizationServerOptions
        {
            AllowInsecureHttp = true,
            TokenEndpointPath = new PathString("/token"),
            AccessTokenExpireTimeSpan = TimeSpan.FromDays(1),
            Provider = new SimpleAuthorizationServerProvider()
        };

        // Token Generation
        app.UseOAuthAuthorizationServer(oAuthServerOptions);
        app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions());

    }
}

y esta es mi implementación de la clase SimpleAuthorizationServerProvider

private IUserService _userService;
    public IUserService UserService
    {
        get { return (IUserService)(_userService ?? GlobalConfiguration.Configuration.DependencyResolver.GetService(typeof(IUserService))); }
        set { _userService = value; }
    }

    public async override Task ValidateClientAuthentication(OAuthValidateClientAuthenticationContext context)
    {
        context.Validated();
    }

    public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
    {
        context.OwinContext.Response.Headers.Add("Access-Control-Allow-Origin", new[] { "*" });

        var user = await UserService.GetUserByEmailAndPassword(context.UserName, context.Password);

        if (user == null)
        {
            context.SetError("invalid_grant", "The user name or password is incorrect.");
            return;
        }

        var identity = new ClaimsIdentity(context.Options.AuthenticationType);
        identity.AddClaim(new Claim("sub", context.UserName));
        identity.AddClaim(new Claim("role", "user"));

        context.Validated(identity);

    }
}

Después de llamar a la URL / token, recibo el siguiente error

Ningún ámbito con una etiqueta que coincida con 'AutofacWebRequest' es visible desde el ámbito en el que se solicitó la instancia. Esto generalmente indica que un componente registrado como solicitud HTTP está siendo solicitado por un componente SingleInstance () (o un escenario similar). En la integración web, siempre solicite dependencias de DependencyResolver.Current o ILifetimeScopeProvider.RequestLifetime, nunca desde el contenedor mismo

¿Hay alguna manera de usar la inyección de dependencia dentro de esta clase? Estoy usando un patrón de repositorio para acceder a mis entidades, por lo que no creo que sea una buena idea hacer una nueva instancia del contexto del objeto. ¿Cuál es la forma correcta de hacer esto?

Respuestas a la pregunta(3)

Su respuesta a la pregunta