Resolviendo IOwinContext en la aplicación MVC5 usando Autofac

Tengo problemas para usarMembershipReboot con la nueva plantilla ASP MVC5 yAutofac. He usado la plantilla MVC5 predeterminada para configurar el sitio y luego intenté conectar elMembershipReboot framework como reemplazo del marco de identidad ASP que se incluye con la plantilla.

Este problema que tengo está tratando de resolver unIOwinContext desde elAutofac envase. Aquí está mi cableado en la clase de inicio (reducido a lo básico). Este es el cableado utilizado en las muestras paraMembershipReboot Owin aplicación (excepto que allí usa Nancy).

public partial class Startup
 {
    public void Configuration(IAppBuilder app)
    {
        var builder = new ContainerBuilder();
        builder.RegisterControllers(Assembly.GetExecutingAssembly());

        builder.Register(c => new DefaultUserAccountRepository())
            .As<IUserAccountRepository>()
            .As<IUserAccountQuery>()
            .InstancePerLifetimeScope();

        builder.RegisterType<UserAccountService>()
            .AsSelf()
            .InstancePerLifetimeScope();

        builder.Register(ctx =>
        {
            **var owin = ctx.Resolve<IOwinContext>();** //fails here
            return new OwinAuthenticationService(
                MembershipRebootOwinConstants.AuthenticationType,
                ctx.Resolve<UserAccountService>(),
                owin.Environment);
        })
            .As<AuthenticationService>()
            .InstancePerLifetimeScope();

        var container = builder.Build();
        DependencyResolver.SetResolver(new AutofacDependencyResolver(container));

        ConfigureAuth(app);
        app.Use(async (ctx, next) =>
        {
            using (var scope = container.BeginLifetimeScope(b =>
            {
                b.RegisterInstance(ctx).As<IOwinContext>();
            }))
            {
                ctx.Environment.SetUserAccountService(() => scope.Resolve<UserAccountService>());
                ctx.Environment.SetAuthenticationService(() => scope.Resolve<AuthenticationService>());
                await next();
            }
        });
    }

Y aquí está mi controlador con la dependencia especificada en el constructor del controlador.

public class HomeController : Controller
{
    private readonly AuthenticationService service;

    public HomeController(AuthenticationService service)
    {
        this.service = service;
    }

    public ActionResult Index()
    {
        return View();
    }

    public ActionResult About()
    {
        ViewBag.Message = "Your application description page.";

        return View();
    }

    public ActionResult Contact()
    {
        ViewBag.Message = "Your contact page.";

        return View();
    }
}

Parece que necesito envolver miAutofac contenedor en unAutofacDependencyResolver para que el marco MVC use el contenedor para resolver componentes. Esta es la única gran diferencia con respecto aNancy Owin muestra y mi uso en MVC5.

Cuando hago esto, parece (de mi seguimiento) como si la dependencia se resolviera sin pasar primero por elOWIN middleware apilar para que elIOwinContext nunca está registrado

¿Qué estoy haciendo mal aquí?

ACTUALIZAR:

Brock, su nueva muestra funciona perfectamente cuando migro la configuración a mi proyecto. Solo para mi comprensión, parece que esta línea en su nueva muestra registra el OwinContext actual con el contenedor y eso es lo que faltaba anteriormente.

builder.Register(ctx=>HttpContext.Current.GetOwinContext()).As<IOwinContext>();

Es eso

Respuestas a la pregunta(1)

Su respuesta a la pregunta