AutofacServiceHost.Container static property must be set before services can be created

In my WCF services for WCX project I am trying to get DI / IOC using autofac going ... been on it all day, but I think I am close (different errors go here) ... this error I cannot figure out how shake ... "AutofacServieHost.Container static property should be set ..." .. but I think I'm setting it up!?! What am I doing wrong?

  protected void Application_Start(object sender, EventArgs e)
        var builder = new ContainerBuilder();

        builder.Register(c => new DatabaseFactory()).As<IDatabaseFactory>().Named<DatabaseFactory>("DBFactory");
        builder.Register(c => new ListingSqlRepository(c.ResolveNamed<DatabaseFactory>("DBFactory"))).As<IListingSqlRepository>().Named<ListingSqlRepository>("LSR");
        builder.Register(c => new ListingRepository(c.ResolveNamed<ListingSqlRepository>("LSR"))).As<IListingRepository>().Named<ListingRepository>("LR");
        builder.Register(c => new Service1(c.ResolveNamed<IListingRepository>("LR"))).As<IService1>();

        using (var container = builder.Build())
            Uri address = new Uri("http://localhost:57924/Service1");
            ServiceHost host = new ServiceHost(typeof(Service1), address);

            host.AddServiceEndpoint(typeof(IService1), new BasicHttpBinding(), string.Empty);


            //BREAKS HERE?
            host.Description.Behaviors.Add(new ServiceMetadataBehavior { HttpGetEnabled = true, HttpGetUrl = address });

            Console.WriteLine("The host has been opened.");




Then SERVICE: namespace LOTW2012.WS {

public class Service1 : IService1
    private IListingRepository _listingRepository { get; set; }

    public Service1(IListingRepository iLR) {
        this._listingRepository = iLR;

    public Service1()

    public List<Listing> GetListingsByStateName(string stateName)
        //todo ..getall for now
        var listings = _listingRepository.GetAll().ToList();

        return listings;



source to share

1 answer

You need to inform Autofac WCF integration about the container being created by setting the appropriate property:

var builder = new ContainerBuilder();

// ...

AutofacHostFactory.Container = builder.Build();

// ...


This will allow Autofac to resolve service types.



All Articles