Как я могу использовать Autofac в EndRequest?

Я использую Autofac с .Net MVC 3. Кажется, что Autofac располагает областью lifetime в Application_EndRequest, что имеет смысл. Но это вызывает эту ошибку, когда я пытаюсь найти службу в своем собственном коде, который выполняется во время EndRequest:

 MESSAGE: Instances cannot be resolved and nested lifetimes cannot be created from this LifetimeScope as it has already been disposed.
STACKTRACE: System.ObjectDisposedException
  at Autofac.Core.Lifetime.LifetimeScope.ResolveComponent(IComponentRegistration registration, IEnumerable`1 parameters)
  at Autofac.ResolutionExtensions.ResolveOptionalService(IComponentContext context, Service service, IEnumerable`1 parameters)
  at System.Web.Mvc.DependencyResolverExtensions.GetService[TService](IDependencyResolver resolver)

Для справки, здесь код, который я использую, чтобы попытаться разрешить службы:

    public T GetInstance<T>()
    {
        return DependencyResolver.Current.GetService<T>();
    }

Можно ли каким-либо образом иметь код, который выполняется из EndRequest, использовать Autofac для разрешения службы?

Изменить: я думал о том, чтобы делать это с отдельной областью только во время EndRequest, как предлагает Джим ниже. Однако это означает, что любые службы, зарегистрированные как InstancePerHttpRequest, получат новый экземпляр во время EndRequest, который кажется не идеальным.

Ответ 1

Вероятно, вам придется создать свою собственную сферу жизни. Предполагая, что у вас есть что-то в своем global.asax.cs:

public class MvcApplication : HttpApplication
{
    internal static readonly IContainer ApplicationContainer = InitAutofac();
}

Тогда вы могли бы сделать что-то подобное в своем EndRequest:

using (var scope = MvcApplication.ApplicationContainer.BeginLifetimeScope())
{
    var service = scope.Resolve<Stuff>();
    service.DoStuff();
}