内存分配静态数据类型

时间:2016-08-31 07:22:08

标签: c# asp.net-mvc memory-management static

我有一个服务,我在asp.net mvc5框架中通过autofac注册了这个依赖项。

public partial class EBayApiService : IEBayApiService
{
    #region Fields
    private readonly GlobalSettingsForEBay _globalSetting;
    private static ApiContext _context;
    #endregion

    #region Ctor
    public EBayApiService(GlobalSettingsForEBay globalSetting)
    {
        this._globalSetting = globalSetting;
        _context = GetApiContext();
    }

     static ApiContext GetApiContext()
    {
        //apiContext is a singleton,
        //to avoid duplicate configuration reading
        if (_context != null)
        {
            return _context;
        }
        else
        {
            _context = new ApiContext();
            return _context;
        }

        public CategoryTypeCollection GetAllEBayParentCategories(ApiContext context)
       {
           //here I play with _context.
       }

  }

第一次来自浏览器_context的请求为null并且它收集数据。在每次请求之后,它都不为空。

现在我的问题是它何时再次变为空?或者它在整个生命周期中只采集一次数据。

2 个答案:

答案 0 :(得分:1)

除非重新启动IIS,否则它只在生命周期中使用一次数据。如果重新启动IIS,_context将再次null,因为_context是静态类型。

答案 1 :(得分:0)

我认为首先每页加载都会为null(页面“PostBack”)。