在控制台应用程序的 Autofac 容器中注册 WCF 服务

Register WCF service in Autofac Container within Console App

我在单独的项目中有带有 WCF 的 .NET 4.8 控制台应用程序。我已经在 Autofac 容器中注册了我所有的 class,然后是 MyServiceManager,它是 ServiceContract 的实现,但出现错误,不确定我在拼图中遗漏了什么

错误

System.ArgumentException: 'The service contract type 'App.WCF.Service.ServicesManager.MyServiceManager' has not been registered in the container.

参数名称:contractType'

控制台应用程序

 public static void Main(string[] args)
    {
        Console.WriteLine("Initialise Application....");

        var buildContainer = CompositionRoot();

        ServiceHost appHostServices = new ServiceHost(typeof(MyServiceManager));
        appHostServices.AddDependencyInjectionBehavior<MyServiceManager>(buildContainer); //Getting Error Here
        appHostServices.Open();
        Console.WriteLine("opening webservices....");
        
        buildContainer.Resolve<MyApplication>().Run();

        Console.ReadLine();
        appHostServices.Close();
    }

    private static IContainer CompositionRoot()
    {
        ContainerBuilder builder = new ContainerBuilder();
        builder.RegisterType<MyApplication>();
        builder.RegisterType<CallMyMessage>().As<ICallMyMessage>();
        builder.RegisterType<Message>().As<IMessage>();

        return builder.Build();
    }

}

根据显示的代码,MyServiceManager 未在容器中注册。

private static IContainer CompositionRoot()
{
    ContainerBuilder builder = new ContainerBuilder();
    builder.RegisterType<MyApplication>();
    builder.RegisterType<CallMyMessage>().As<ICallMyMessage>();
    builder.RegisterType<Message>().As<IMessage>();

    builder.RegisterType<MyServiceManager>(); //<-- Was missing

    return builder.Build();
}

容器需要知道如何解析契约类型,因为它用于管理服务主机中的依赖项注入。