Я зарегистрировал такой компонент в моем файле 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, никогда из самого контейнера.
Как мне заставить это работать? Эта причина, по которой я хочу этого, заключается в том, что рабочий контекст обрабатывает такие вещи, как получение текущего клиента и т.д.
Еще несколько вопросов. Является ли разумным/лучшим методом регистрироваться каждый раз? Будут ли сценарии, которые мне потребуются, чтобы добавить другие компоненты на другом этапе?