2013-04-05 19 views
5

Trong StructureMap, làm thế nào tôi có thể giải phóng và loại bỏ các đối tượng có phạm vi Http trên một cá thể Container cụ thể? Đối với các intance mặc định trong Object Factory, tôi có thể thực thi phương thức ReleaseAndDisposeAllHttpScopedObjects(), nhưng lớp Container và giao diện IContainer dường như không có phương thức như vậy.Làm thế nào để phát hành và xử lý tất cả các đối tượng có phạm vi của Http trên cá thể Container?

Trả lời

6

Nếu bạn nhìn vào bên trong của ObjectFactory.ReleaseAndDisposeAllHttpScopedObjects, bạn có thể thấy rằng nó là một phương pháp conveniency thực hiện như thế này:

public static void ReleaseAndDisposeAllHttpScopedObjects() 
{ 
    HttpContextLifecycle.DisposeAndClearAll(); 
} 

IE. Bạn có thể gọi phương thức HttpContextLifecycle.DisposeAndClearAll để xóa các đối tượng.

Chỉnh sửa: Vì HttpContextLifecycle là toàn cầu và không cho mỗi vùng chứa, tôi nghĩ rằng cách tiếp cận nested container sẽ là giải pháp để kiểm soát tốt hơn đối với tuổi thọ đối tượng trong khi yêu cầu Http.

+0

Cảm ơn, nhưng có vẻ như vứt bỏ tất cả các đối tượng phạm vi của Http, không chỉ các đối tượng từ cá thể chứa hiện tại. –

+0

@ guillegr123 - 'HttpContextLifecycle' là toàn cầu, không phải trên mỗi vùng chứa. – PHeiberg

+0

Nếu bạn muốn kiểm soát tuổi thọ của các đối tượng cụ thể trong một 'HttpRequest', tôi nghĩ bạn nên đi với một [thùng chứa lồng nhau] (http://codebetter.com/jeremymiller/2010/02/10/nested-containers-in- phương pháp structuremap-2-6-1 /). – PHeiberg

Các vấn đề liên quan