对于没有 .svc 的自托管服务,是否需要指定服务实现类型和宿主工厂?当我尝试运行下面的控制台应用程序时,我收到一个错误,即没有默认构造函数,所以似乎我的容器注册没有被使用。我错过了什么?
var builder = new ContainerBuilder();
builder.Register(c => new GenericRepository()).As<IRepository>();
builder.Register(c => new BusinesLogic(c.Resolve<IRepository>())).As<IBusinesLogic>();
builder.Register(c => new MyService(c.Resolve<IBusinesLogic>())).As<IMyService>();
using (IContainer container = builder.Build())
{
var address = new Uri("net.tcp://localhost:8523/MyService");
var host = new ServiceHost(typeof(MyService), address);
host.AddServiceEndpoint(typeof(IMyService), new NetTcpBinding(), string.Empty);
host.AddDependencyInjectionBehavior<IMyService>(container);
host.Description.Behaviors.Add(new ServiceMetadataBehavior { HttpGetEnabled = false });
host.Open();
Console.WriteLine("Navigate to the following URI to see the service.");
Console.WriteLine(address);
Console.WriteLine("Press enter to exit...");
Console.ReadLine();
host.Close();
Environment.Exit(0);
}