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

            services.AddDistributedMemoryCache();

            RepositoryService.Register <BookLibraryRepository>(
                Configuration["ConnectionStrings:DefaultConnection"].ToString().Replace("%CONTENTROOTPATH%", _contentRootPath)
                );
            RepositoryService.SetSessionExpirationTimeInMinutes(20);

            services.AddSession(options =>
            {
                options.Cookie.Name        = Configuration.GetSection("sessionConfig")["SessionCookieName"].ToString();
                options.IdleTimeout        = TimeSpan.FromMinutes(RepositoryService.SESSIONEXPIRATIONTIMEINMINUTES);
                options.Cookie.HttpOnly    = true;
                options.Cookie.IsEssential = true;
            });

            services.Configure <CookiePolicyOptions>(options =>
            {
                // This lambda determines whether user consent for non-essential cookies is needed for a given request.
                options.CheckConsentNeeded    = context => false;
                options.MinimumSameSitePolicy = SameSiteMode.None;
            });

            services.Configure <SessionConfig>(Configuration.GetSection("sessionConfig"));
            services.AddDbContext <BookLibraryContext>(options =>
                                                       options.UseSqlServer(RepositoryService.ConnectionString <BookLibraryRepository>()));

            services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
            .AddCookie(options =>     //CookieAuthenticationOptions
            {
                options.LoginPath      = new Microsoft.AspNetCore.Http.PathString("/Account/Login");
                options.ExpireTimeSpan = TimeSpan.FromMinutes(RepositoryService.SESSIONEXPIRATIONTIMEINMINUTES);
            });

            services.AddControllersWithViews().AddRazorRuntimeCompilation();
        }
 public PersonsContext()
     : base(RepositoryService.ConnectionString <PersonsRepository>())
 {
 }