ASP.NET Core,AddScoped不会保留具有相同请求的数据

阿南德

与AddScoped卡在一个项目中。

然后,为了进行测试,我在Asp.Net Core中创建了一个新的Web应用程序项目,并创建了一个接口以及一个类IMyInfo和MyInfo。它只有一个整数属性mydata和两个方法Increment()和GetData()“ Increment()”方法仅将值增加1,而“ GetData()”方法将返回属性“ mydata”的值。通过TestingController,我只是执行Increment()方法,然后调用GetData()。

当我使用AddSingleton服务时,它在每次重新加载请求时都提供一个递增的值(即1,2,3,4 ...),但是每次使用AddScoped(而不是AddTransient)时都会得到“ 1”。

不知道我错了吗?

以下是我的所有代码:

我在一个新项目中创建了以下接口和类:

public interface IMyInfo
{
    void Increment();
    int GetData();
}

public class MyInfo : IMyInfo
{
    private int mydata = 0;

    public void Increment()
    {
        mydata++;
    }
    public int GetData()
    {
        return mydata;
    }

}

然后创建一个TestController:

public class TestController : Controller
{
    private readonly IMyInfo myInfo;

    public TestController(IMyInfo myInfo)
    {
        this.myInfo = myInfo;
    }

    public string Index()
    {
        myInfo.Increment();
        int d = myInfo.GetData();
        return d.ToString();
    }
}

这是我的启动文件代码:

public class Startup
{
    public Startup(IConfiguration configuration)
    {
        Configuration = configuration;
    }

    public IConfiguration Configuration { get; }

    // This method gets called by the runtime. Use this method to add services to the container.
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddControllersWithViews();

        services.AddScoped<IMyInfo, MyInfo>();   // It is not giving me expected result...
        //services.AddSingleton<IMyInfo, MyInfo>();
    }

    // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        else
        {
            app.UseExceptionHandler("/Home/Error");
        }
        app.UseStaticFiles();

        app.UseRouting();

        app.UseAuthorization();

        app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllerRoute(
                name: "default",
                pattern: "{controller=Test}/{action=Index}/{id?}");
        });
    }
}
圣保利

是的,这是正常现象。

当service声明为Scoped时,它将在每个范围上都有一个新实例,默认情况下,ASP Core会在每个HTTP请求上创建一个新范围,但是您可以自己创建一个范围(如@juunas正确注释)。

每次使用瞬态时,都会有一个新实例。

就像@ Yiyi You所评论的那样,服务寿命文档

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

尝试将 Irepositories 添加到具有 addScoped ASP.Net core 2.1 的服务时出错

来自分类Dev

具有相同验证组的asp.net RequiredFieldValidators不会同时触发

来自分类Dev

ASP.NET Core服务.ConfigureServices启动方法中的AddScoped

来自分类Dev

具有约束的 ASP.NET Core 路由不会回退到默认路由

来自分类Dev

具有请求/响应模式的ASP.NET Core Web API异常处理

来自分类Dev

asp .net 和 asp .net core 有什么区别?

来自分类Dev

如何使用asp.net FileUpload控件存储具有相同签名但包含不同数据的文件

来自分类Dev

如何在 ASP.NET MVC 中保存多个具有相同名称属性的数据?

来自分类Dev

在asp.net中查找具有相同值的行

来自分类Dev

覆盖ASP .NET Core中的请求对象

来自分类Dev

ASP.NET-Core嵌套的ASP TagHelper

来自分类Dev

ASP.Net Core,创建具有复杂数据类型属性的模型

来自分类Dev

具有简单注入器的ASP.NET Core

来自分类Dev

具有EntityFrameworkCore的ASP.NET Core中的SQLite

来自分类Dev

具有COM对象的ASP.NET CORE WEB API

来自分类Dev

具有依赖瞬态的 ASP.NET Core DI

来自分类Dev

在ASP.NET中显示来自具有相同列名相同值的两个模型的数据

来自分类Dev

ASP.NET Core返回

来自分类Dev

ASP.NET Core WebSockets

来自分类Dev

与Asp.net相比,ASP.net CORE的主要优势

来自分类Dev

与ASP.NET MVC BeginExecuteCore等效的ASP.NET Core

来自分类Dev

从asp net 5迁移到asp net core时出错

来自分类Dev

具有ASP.NET身份的AuthorizeAttribute

来自分类Dev

Asp.Net Core-具有相同名称和不同参数的多种操作方法

来自分类常见问题

ASP.NET 5,.NET Core和ASP.NET Core 5有什么区别?

来自分类Dev

发出具有不同类型的3参数Ajax请求时遇到问题-Asp.net Core MVC

来自分类Dev

ASP.NET MVC 6(ASP.NET Core或ASP.NET5)中的友好URL

来自分类Dev

ASP.NET Core MVC应用程序请求永远不会完成

来自分类Dev

ASP.NET Core API Controller即使成功完成POST请求也不会返回任何内容

Related 相关文章

  1. 1

    尝试将 Irepositories 添加到具有 addScoped ASP.Net core 2.1 的服务时出错

  2. 2

    具有相同验证组的asp.net RequiredFieldValidators不会同时触发

  3. 3

    ASP.NET Core服务.ConfigureServices启动方法中的AddScoped

  4. 4

    具有约束的 ASP.NET Core 路由不会回退到默认路由

  5. 5

    具有请求/响应模式的ASP.NET Core Web API异常处理

  6. 6

    asp .net 和 asp .net core 有什么区别?

  7. 7

    如何使用asp.net FileUpload控件存储具有相同签名但包含不同数据的文件

  8. 8

    如何在 ASP.NET MVC 中保存多个具有相同名称属性的数据?

  9. 9

    在asp.net中查找具有相同值的行

  10. 10

    覆盖ASP .NET Core中的请求对象

  11. 11

    ASP.NET-Core嵌套的ASP TagHelper

  12. 12

    ASP.Net Core,创建具有复杂数据类型属性的模型

  13. 13

    具有简单注入器的ASP.NET Core

  14. 14

    具有EntityFrameworkCore的ASP.NET Core中的SQLite

  15. 15

    具有COM对象的ASP.NET CORE WEB API

  16. 16

    具有依赖瞬态的 ASP.NET Core DI

  17. 17

    在ASP.NET中显示来自具有相同列名相同值的两个模型的数据

  18. 18

    ASP.NET Core返回

  19. 19

    ASP.NET Core WebSockets

  20. 20

    与Asp.net相比,ASP.net CORE的主要优势

  21. 21

    与ASP.NET MVC BeginExecuteCore等效的ASP.NET Core

  22. 22

    从asp net 5迁移到asp net core时出错

  23. 23

    具有ASP.NET身份的AuthorizeAttribute

  24. 24

    Asp.Net Core-具有相同名称和不同参数的多种操作方法

  25. 25

    ASP.NET 5,.NET Core和ASP.NET Core 5有什么区别?

  26. 26

    发出具有不同类型的3参数Ajax请求时遇到问题-Asp.net Core MVC

  27. 27

    ASP.NET MVC 6(ASP.NET Core或ASP.NET5)中的友好URL

  28. 28

    ASP.NET Core MVC应用程序请求永远不会完成

  29. 29

    ASP.NET Core API Controller即使成功完成POST请求也不会返回任何内容

热门标签

归档