Как разрешить Autofac InstancePerHttpRequest

Я зарегистрировал подобный компонент в моем Global.asax.cs:

ContainerBuilder builder = new ContainerBuilder();
builder.RegisterControllers(Assembly.GetExecutingAssembly());

builder.RegisterType<WebWorkContext>().As<IWorkContext>().InstancePerHttpRequest();

IContainer container = builder.Build();
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));

// This is where my error happens, not sure why?
var workContext = container.Resolve<IWorkContext>();

WebWorkContextкласс:

public class WebWorkContext : IWorkContext
{
     // Left out other code
}

IWorkContextинтерфейс:

public interface IWorkContext
{
     // Left out other code
}

Ошибка, которую я Я получаю:

Ни одна область с тегом, соответствующим «httpRequest», не видна из области, в которой экземпляр был запрошен.Обычно это указывает на то, что компонент, зарегистрированный как HTTP-запрос, запрашивается компонентом SingleInstance() (или аналогичным сценарием). При веб-интеграции всегда запрашивайте зависимости от DependencyResolver.Current или ILifetimeScopeProvider.RequestLifetime, а не от самого контейнера. .

Как заставить это работать? Причина, по которой я хочу этого, заключается в том, что рабочий контекст обрабатывает такие вещи, как получение текущего клиента и т. д.

Еще несколько вопросов. Разумно ли/лучше всего регистрироваться сразу? Будут ли сценарии, в которых мне нужно будет добавить дополнительные компоненты на другом этапе?

14
задан abatishchev 20 August 2014 в 17:08
поделиться