我需要在 global.asax 中的应用程序启动时执行一些一次性代码。我已经启动并运行了大量注册的 autofac,但问题是我无法弄清楚如何解决或将依赖项注入到我 global.asax 中的SecurityConfig.RegisterActivities()中。
我尝试使用 autofac 容器自己在 global.asax 中手动解决依赖关系,但它引发了异常“从请求实例的范围中看不到带有匹配 'AutofacWebRequest' 的标记的范围。 ”
如何将这种依赖关系融入该类?
protected void Application_Start()
{
var builder = new ContainerBuilder();
DependencyRegistrar dr = new DependencyRegistrar();
dr.Register(builder);
new SecurityConfig().RegisterActivities(); // this needs injecting into or resolving of IServiceManager instance
}
public class DependencyRegistrar
{
public virtual IContainer Register(ContainerBuilder builder)
{
builder.RegisterType<ServiceManager>().As<IServiceManager>().InstancePerHttpRequest();
builder.RegisterType<SecurityConfig>().AsSelf().PropertiesAutowired().InstancePerDependency();
}
}
public class SecurityConfig
{
public void RegisterActivities()
{
ServiceManager.DoSomething();
}
public IServiceManager ServiceManager { get; set; }
}