I have a service that is registered in my container as a single instance
public class MyModule : Module
{
protected override void Load(ContainerBuilder builder)
{
builder.RegisterType<MyService>()
.As<IMyService>()
.SingleInstance();
}
}
The container is created as below
public static IContainer SetupContainer()
{
var builder = new ContainerBuilder();
var moduleTypes = TypeCache.GetTypes(x => x.IsClassEx() && !x.IsAbstractEx() && x.ImplementsInterfaceEx<IModule>());
foreach (var moduleType in moduleTypes)
{
if (Activator.CreateInstance(moduleType) is IModule module)
builder.RegisterModule(module);
}
var assemblies = AppDomain.CurrentDomain.GetAssemblies();
builder.RegisterAssemblyModules(assemblies);
var result = builder.Build();
return result;
}
This all works perfectly within normal code - I can inject my service and its resolved as I expect
However, when I try to inject my service into a web api controller, the service is again resolved, but Autofac gives me a NEW instance of my service
How can I prevent this behaviour so that the originally created instance is injected?