在控制台应用程序的 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();
}
容器需要知道如何解析契约类型,因为它用于管理服务主机中的依赖项注入。
我在单独的项目中有带有 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();
}
容器需要知道如何解析契约类型,因为它用于管理服务主机中的依赖项注入。