protected void Application_Start(object sender, EventArgs e)
{
var builder = new ContainerBuilder();
builder.RegisterType<Database>().InstancePerLifetimeScope();
var container = builder.Build();
_containerProvider = new ContainerProvider(container);
// Set the service locator to an AutofacServiceLocator
var csl = new AutofacServiceLocator(container);
ServiceLocator.SetLocatorProvider(() => csl);
}
Page Default.aspx
public Database db1 { get; set; }
protected void Page_Load(object sender, EventArgs e)
{
this.Title = Thread.CurrentThread.ManagedThreadId.ToString();
var db2 = ServiceLocator.Current.GetInstance<Database>();
this.Label1.Text = string.Format("db1:{0} db2:{1}", db1.GetHashCode(), db2.GetHashCode());
}
Run 1: db1:8934887 db2:22508250
Run 2: db1:11828856 db2:22508250
Run 3: db1:55103905 db2:22508250
I used InstancePerLifetimeScope,why it's the same in ServiceLocator? how to fix it?
thinks!