Assuming that I have the following interface and class:
public interface IFooRepo : IDisposable {
//...
}
public FooRepo : IFooRepo {
//Methods here
This portion comes into lifetime management in IOC or DI Container.
As you are using AutoFac following link may help you. http://autofac.readthedocs.io/en/latest/lifetime/disposal.html
Also look at section of "Controlling scope and lifetime" for autofac.
Autofac calls Dispose
for all instances of components implementing IDisposable
once their parent lifetime scope ends. You don't need to do any additional work here.
To get familiar with options provided by Autofac for managing lifetime scopes, follow @dotnetstep's links.
Managing lifetime scopes is a strategy that depends on your specific application not only its type (MVC or plain ASP.NET or whatever). This article about lifetimes by the Autofac's creator gives a deep explanation of the topic.
As for MVC3 project, I'd recommend you follow the MVC3 integration guidelines. This will make all individual HTTP requests have separate lifetime scopes created for them. Once a HTTP request is finished, Autofac will finish the associated lifetime scope and dispose all disposable resources created in that scope.
The same effect can be achieved for an ASP.NET WebForms project by following the corresponding guidelines