Build()或Update()只能在ContainerBuilder上调用一次

问题描述 投票:1回答:2

我们目前在mvc网络应用中使用autofac。

Build() or Update() can only be called once on a ContainerBuilder

每1-4天,我们都会收到上述错误。这让我疯狂。我一直在尝试查看为什么会这样做,但是我无法查明问题所在。

有人可以指出正确的方向。

asp.net-mvc-3 autofac
2个回答
1
投票

除非您有需要HttpApplication资源的启动过程,否则建议将应用程序初始化删​​除为静态构造函数或完全独立的单例。我在Application_Start()上也遇到过类似的问题,您需要一个只能被调用一次的结构。


0
投票

我在我的应用程序(.Net Core 3.1)中遇到了同样的事情我想获取容器并解决注册服务。

在.Net Core 3.1中,您不能像以前的版本那样简单地更改Startup.ConfigureServices方法以返回IServiceProvider

因此,要在启动void Configure(IApplicationBuilder app)方法调用app.ApplicationServices.GetAutofacRoot()中获得所需的服务,这将返回ILifetimeScope实例,可用于解析服务

注意。考虑到全局保存此实例不是最佳实践

 public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {

            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            //app middleware registrations 
            //...
            //

            ILifetimeScope autofacRoot = app.ApplicationServices.GetAutofacRoot();
            var repository = autofacRoot.Resolve<IRepository>();
        }
© www.soinside.com 2019 - 2024. All rights reserved.