首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么作用域服务会被多次实例化?

为什么作用域服务会被多次实例化?
EN

Stack Overflow用户
提问于 2020-01-15 12:19:45
回答 1查看 350关注 0票数 0

在我的ConfigureServices中,我有许多已注册的服务,例如:

代码语言:javascript
复制
services.AddScoped<IService1,Service1>();
services.AddScoped<IService2,Service2>();
services.AddScoped<IService3,Service3>();

如果我现在在上面的每一个上都设置一个断点,我会得到预期的行为,即断点在启动期间如预期的那样被击中一次。

但是,我现在注册了另一个服务,如下所示:

代码语言:javascript
复制
    services.AddScoped<IWCFService>(service =>
    {
        using (var scope = service.CreateScope())
        {
            var settingData = scope.ServiceProvider.GetRequiredService<AppSettingsDB>();
            var client = new WCFServiceClient(
                WCFServiceClient.EndpointConfiguration.WCF,
                settingData.Url);
            client.Endpoint.EndpointBehaviors.Add(
                new InspectorBehavior<IWCFServiceClient>(settingData.EnableLog));
            return client;
        };
    });

但是,如果我添加一个断点,我会在每次请求时看到它的命中。

我是否遗漏了什么,或者是预期的行为?

EN

回答 1

Stack Overflow用户

发布于 2020-01-15 18:12:56

这是预期的行为,因为作用域的生存期意味着对象将在每个请求中初始化一次。因此,您的实现因子委托将在每次请求API时调用,而不是每次调用服务容器时调用(瞬态)。

参考Service lifetimes

作用域

每个客户端请求(连接)创建一次作用域生命周期服务(AddScoped)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59745083

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档