Cómo integrar el proveedor de membresía IoC con ASP.NET MVC

Tengo un proveedor de roles / membresía personalizado que uso en mis controladores MVC que también quiero tener accesible para ASP.NET MVC, así que puedo usar los Filtros de Autorización, etc. Como muchas personas han implementado proveedores personalizados, me imagino que mucha gente lo ha hecho esto, pero no lo he descubierto o encontrado publicaciones que aborden este problema específicamente.Esta publicación es una especie de otra cara de mi pregunta. En mi caso, tengo a mi proveedor personalizado trabajando bien con mis controladores y quiero que MVC lo use también.

Mi proveedor está implementado con un diseño de inyección de dependencia / IoC. El proveedor expone funcionalidad adicional más allá de la API de roles / membresía de línea de base. En mis controladores, uso Castle Windsor para crear instancias. El código es similar a:

<code>public class HomeController : Controller {
    IMembershipService _membershipService;
    public HomeController(IMembershipService membershipService) {
        _membershipService= membershipService;
    }
}

<castle>
 <components>
  <component id="MembershipService" 
             service="IMembershipService, MyApp" 
             type="MembershipService, MyApp" lifestyle="PerWebRequest">
    <parameters>
      <connectionString>#{defaultConnectionString}</connectionString>
    </parameters>
  </component>
 </components>
</castle>

public class WindsorControllerFactory : DefaultControllerFactory {
    private WindsorContainer _container;
    public WindsorControllerFactory() {
        _container = new WindsorContainer(new XmlInterpreter(new ConfigResource("castle")));

        List<Type> controllerTypes = new List<Type>();
        foreach (Type t in Assembly.GetExecutingAssembly().GetTypes()) {
            if (typeof(IController).IsAssignableFrom(t))
                controllerTypes.Add(t);
        }

        foreach (Type t in controllerTypes) {
            // LifestyleType.Transient = new controller instance for each request
            _container.AddComponentLifeStyle(t.FullName, t, LifestyleType.Transient);
        }
    }

    protected override IController GetControllerInstance(Type controllerType) {
        return (IController)_container.Resolve(controllerType);
    }
</code>

Todo esto funciona muy bien en mi código C #, pero quiero conectar mi proveedor al MVC para usar los filtros [Autorizar] con él:

<code>[Authorize (Users="user1, user2", Roles="role8")]
public ViewResult MyResult(int x) {
    // implement
}
</code>

Sé que la forma habitual de informar a ASP.NET sobre una membresía personalizada o un proveedor de roles es en el archivo web.config como se muestra a continuación, pero si lo hago, ASP.NET solo intentará llamar al constructor predeterminado, que no funcionará. Cualquier ayuda apreciada.

<code><membership>
 <providers>
  <clear/>
  <add name="MyMembershipProvider" type="MyMembershipProvider">
 </providers>
</membership>
</code>

Respuestas a la pregunta(1)

Su respuesta a la pregunta