Tôi đang sử dụng hộp chứa Autofac IoC với phần bổ trợ MVC4, cung cấp phạm vi đời sống InstancePerHttpRequest. Tuy nhiên trong dự án của tôi, tôi có các chủ đề web, api và nền công nhân. Trong ví dụ sau tôi giả định phạm vi InstancePerHttpRequest không có nghĩa là nhiều khi không có nguồn gốc từ một yêu cầu web.Có thể xác định nhiều phạm vi thời gian của Autofac trên đăng ký không?
builder.RegisterType<DatabaseFactory>().As<IDatabaseFactory>()
.InstancePerHttpRequest()
Tôi tự hỏi liệu có thể làm điều gì đó giống như ví dụ sau và có vùng chứa chọn phạm vi thời gian phù hợp nhất không?
builder.RegisterType<DatabaseFactory>().As<IDatabaseFactory>()
.InstancePerHttpRequest()
.InstancePerApiRequest()
.InstancePerDependency();
Trong trường hợp này những gì tôi có ý định xảy ra là nếu yêu cầu xuất phát từ một yêu cầu web sau đó nó sẽ chọn phạm vi InstancePerHttpRequest, nếu nó xuất phát từ một yêu cầu WebAPI nó sẽ chọn phạm vi InstancePerApiRequest và nếu nó được sử dụng bởi các luồng công nhân ứng dụng, nó sẽ sử dụng phạm vi InstancePerDependency?
Bất kỳ ý tưởng nào nếu điều này hoặc điều gì đó tương tự đều có thể xảy ra?
Cảm ơn
Tuyệt vời! Cảm ơn bạn đã trả lời kỹ lưỡng, điều này giúp ích rất nhiều. – chriskopec
nghĩ rằng điều này sẽ hữu ích. một ví dụ là sử dụng khung công tác EF kể từ hành động api trên web dbcontext, nếu nó gọi lớp cần truy cập vào cơ sở dữ liệu bằng một chuỗi mới, rất có thể là nếu nó chỉ là instanceperhttprequest, nó sẽ ném ngoại lệ, vì vậy cần có sự linh hoạt để có InstancePerLifetimeScope. nó gần như tốt hơn để có InstancePerLifetimeScope. – koo9