• Webinars
  • Docs
  • Download
  • Blogs
  • Contact Us
Show / Hide Table of Contents
  • Programmer's Guide
  • Client Side API Programming
    • Setting Up Development Environment
    • Basic Cache Operations
      • Initialize Cache
      • Add Data to Cache
      • Update Data in Cache
      • Fetch Data From Cache
      • Remove Data From Cache
      • Dispose Cache
    • Bulk Operations
      • Adding Collection to Cache
      • Updating Collection in Cache
      • Retrieving Collection from Cache
      • Removing Collection from Cache
      • Deleting Collection from Cache
    • Asynchronous Operations
      • Using Asynchronous Operations
      • Using Asynchronous Operations with Callback Methods
    • Groups and Subgroups
      • Adding/Updating Data Group in Cache
      • Retrieving Data Group from Cache
      • Removing Data Group from Cache
    • Tagging Data in NCache
      • Creating Tags
      • Adding Items with Tags
      • Retrieving Previously Tagged Data
      • Removing Tagged Items from Cache
    • Named Tags
    • Data Expiration Strategies
      • Using Absolute Expiration
      • Using Sliding Expiration
    • Cache Dependencies
      • Key Dependency
      • File Dependency
      • Notification based Dependencies
        • Database Dependency using SQL Server
        • Database Dependency using Oracle
      • Polling Based Dependency
      • Custom Data Source Dependency
      • Multiple Cache Sync Dependency
      • Aggregate Dependency
      • Add Dependency to Existing Item
      • Using CLR Procedures to Call NCache
    • Locking Data in NCache
      • Locking Items in Cache (Pessimistic Locking)
      • Locking Items with Cache Item Versioning (Optimistic Locking)
    • SQL Reference for NCache
      • SQL Syntax
      • Querying Samples for Operators
      • Querying Data in NCache
      • NCache Language Integrated Query (LINQ)
        • Using LINQ in NCache
        • Configuring LINQPad for NCache
        • Querying NCache Data in LINQPad
    • Event Notifications
      • Cache Level Event Notifications
      • Item Level Event Notifications
      • Custom Event Notifications
    • Publish/Subscribe (Pub/Sub) in NCache
      • Pub/Sub Topics
      • Managing Topics
      • Pub/Sub Messages
        • Message Behavior and Properties
        • Creating a Message
      • Publish Messages to Topic
      • Subscribe for Topic Messages
      • Monitoring Pub/Sub Topics
    • Continuous Query
    • Using Streams in NCache
      • Opening with Stream Modes
      • Adding and Updating Data with Streams
      • Retrieving Data from Streams
      • Closing a Stream
    • Security and Encryption
      • NCache Security
      • NCache Data Encryption
    • Data Compression
    • NCache Management API
  • Server Side API Programming
    • Cache Startup Loader
      • Components of Cache Startup Loader
      • Sample Implementation of ICacheLoader on Single Node
      • Sample Implementation of ICacheLoader with Distribution Hints
    • Data Source Providers (Backing Source)
      • Read-Through Caching
        • Configure Read-Through Provider
        • Using Read-Through with Cache Operations
      • Write-Through Caching
        • Configuring Write-Through Provider
        • Using Write-Through with Basic Operations
        • Using Write-Behind with Basic Operations
        • Using Write-Behind with Bulk Operations
        • Using Write-Behind with Async Operations
        • Monitor Write-Through Counters
    • Custom Dependency
      • Sample Implementation of Custom Dependency
      • Sample Usage of Custom Dependency
    • WAN Replication through Bridge
      • Bridge Configurations
      • Implementing Bridge Conflict Resolver
    • Entry Processor
      • Sample Implementation of IEntryProcessor Interface
      • Sample Usage of EntryProcessor
    • MapReduce
      • Sample Implementation of MapReduce Interfaces
      • Sample Usage of MapReduce
    • Aggregator
      • Sample Implementation of IValueExtractor Interface
      • Sample Implementation of IAggregator Interface
      • Sample Usage of Aggregator
    • Dynamic Compact Serialization
  • Client Side ASP.NET Features
    • ASP.NET
      • ASP.NET Session State Provider for NCache
      • Multi-Region ASP.NET Session State Provider for NCache
    • ASP.NET Core
      • Session Storage in ASP.NET Core
        • Configure NCache ASP.NET Core Session Provider
        • Configure ASP.NET Core Sessions with NCache IDistributedCache Provider
      • Multi-Region ASP.NET Core Session Provider for NCache
      • Object Caching in ASP.NET Core
    • ASP.NET SignalR
      • Using NCache Extension for SignalR
    • View State Caching
      • Configuring and Using Content Optimization
      • Group View State with Sessions
      • Limit View State Caching
      • Perform Page Level Grouping for View State
    • ASP.NET Output Cache
      • Configure ASP.NET Output Caching
      • Using ASP.NET Output Cache with Custom Hooks
  • Client Side Third Party Integrations
    • Migrating AppFabric to NCache
      • AppFabric API vs. NCache API
    • NHibernate
      • NCache as NHibernate Second Level Cache
      • Using NHibernate Query Caching
      • Configuring Database Synchronization with NHibernate
    • Entity Framework Caching Integration
      • NCache as Entity Framework Second Level Cache
      • Entity Framework Caching Config File
    • Entity Framework Core Caching
      • Installing NCache Entity Framework Core Provider
      • Configuring NCache Entity Framework Core Provider
      • Using NCache Entity Framework Core Provider
        • Caching Options for EF Core Provider
        • LINQ APIs for EF Core Provider
        • Cache Only APIs for EF Core Provider
        • Query Deferred APIs for EF Core Provider
      • Logging in NCache Entity Framework Core Provider
    • Memcached
      • NCache Memcached Gateway Approach
      • Memcached Client Plugin for .NET
    • Debug NCache Providers in Visual Studio
    • NCache for Visual Studio Extension

Configure NCache ASP.NET Core Session Provider

Install NuGet Package

Install the NuGet package Alachisoft.NCache.SessionServices to your application by executing the following command in the Package Manager Console:

Install-Package Alachisoft.NCache.SessionServices

Include Namespaces

To utilize the APIs, include the following namespaces in your application in Startup.cs:

  • using Alachisoft.NCache.Web.SessionState;
  • using Microsoft.AspNetCore.Hosting;

Using NCache Session Management Services with ASP.NET Core requires two steps:

  1. Configuring the session management service

  2. Adding middleware to the application

Step 1: Configure NCache Session Management Service

The session management service needs to be initialized. In Startup.cs, use the SetNCacheSessionConfiguration() extension method on IServiceCollection in ConfigureServices() to initialize the service. The very basic overload of this extension method takes an IOptions<NCacheSessionConfiguration> as its base configuration.

The configuration options provided by NCache are:

Member Type Description Default Value
CacheName string (required) Specifies the name of the cache to be used for caching session. If no cache name is specified, a configuration exception will be thrown. -
EmptySessionWhenLocked bool (optional) Specifies if an empty session should be returned if a session is locked after sessionLockingRetry has exceeded. false
EnableSessionLocking bool (optional) If this flag is set, NCache Session Management exclusively locks the session-store item for which multiple concurrent requests are made. false
EnableLogs bool (optional) If this flag is set, NCache logs all error information. The log files are created in %NCHOME%/log-files/SessionState/. false
EnableDetailLogs bool (optional) When this flag is set, NCache logs all debugging information. The log files are created in %NCHOME%/log-files/SessionState/. false
EnableLocationAffinity bool (optional) Flag to enable Location Affinity for a geographically distributed web farm. false
ExceptionsEnabled bool (optional) Specifies whether exceptions from cache API are propagated to the page output. Setting this flag is especially helpful during development phase of application, since exceptions provide more information about the specific causes of failure. false
OperationRetry int (optional) Specifies the number of times server will retry the operation, in case connection is lost with a server while an operation is executing. 0 (zero)
OperationRetryInterval int (optional) Specifies the time interval between each operation retry, in case connection is lost with the server. 0 (zero)
ReadOnlyFlag string (optional) If specified in HttpContext.Items before session middleware, it will return a read-only session that will not be committed. This session is lock free. NCache.AspNetCore.IsReadOnly
RequestTimeout int (optional) Specifies the time interval in seconds after which a session will be forcibly unlocked if it has not been released during this interval. 120
SessionAppId string (optional) Specifies an identifier to make sure that session ID remains unique in case multiple applications are using the same session. Application ID should be the same for an application in a web farm. If no app ID is specified, nothing will be concatenated with session ID. -
SessionLockingRetry int (optional) If enableSessionLocking is true and this integer is not less than 0, NCache Session Store Provider will return an empty session after sessionLockingRetry, which specify the number of retries to acquire a lock. -1
SessionOptions SessionOptions .NET Core specific class to configure sessions like cookie information. Refer to the API documentation for more detail. -
WriteExceptionsToEventLog bool (optional) If this flag is set, all the exceptions from cache API are written to event logs. false
AffinityMapping CacheAffinity (optional) Array of CacheAffinity type containing the CacheName and CachePrefix which is used to identify the location of source cache in cookies. Note that each location will contain a primary cache, and if more than one caches have been defined, the primary cache will be the one specified against CacheName (see Multi-region session sharing for more detail). null
Note

The configuration must always contain the cache name.

There are two methods to specify configurations:

  • Through your application as IOptions or

  • In JSON format in Appsettings.json of your application.

Method 1: Specifying Configurations in IOptions

The session can be initialized by the AddNCacheSession() extension method that takes an IOptions<NCacheSessionConfiguration> object as the configuration.

public void ConfigureServices(IServiceCollection services)
{
    //Add framework services
    services.AddMvc();

    //Add services to the container with configured session (SessionAppId = NcacheSessionApp) for cache "MyCache", with logging enabled and idle timeout set to 5
    services.AddNCacheSession(configuration =>
    {
        configuration.CacheName = "mySessionCache";
        configuration.EnableLogs = true;
        configuration.SessionAppId = "NCacheSessionApp";
        configuration.SessionOptions.IdleTimeout = 5;
        configuration.SessionOptions.CookieName = "AspNetCore.Session";
    });                   

}

Method 2: Specifying Configurations in Appsettings.json

The configurations for the services can also be provided in JSON format as a section in Appsettings.json of your ASP.NET application:

{

  "AppSettings": {
    "SiteTitle": "ASP.NET MVC Music Store",
    "CacheDbResults": true,
    "CacheName": "mySessionCache"
  },
  "NCacheSessions": {
    "SessionAppId": null,
    "SessionOptions": {
      "CookieName": "AspNetCore.Session",
      "CookieDomain": null,
      "CookiePath": "/",
      "CookieHttpOnly": "True",
      "IdleTimeout": "5",
      "CookieSecure": "None"
    },
    "CacheName": "mySessionCache",
    "EnableLogs": "True",
    "RequestTimeout": "90"
  },

  "DefaultAdminUsername": "Administrator@test.com",
  "DefaultAdminPassword": "myPassword",
  "Data": {
    "DefaultConnection": {
   "ConnectionString": "Server=(localdb)\\MSSQLLocalDB;Database=MusicStore;Trusted_Connection=True;MultipleActiveResultSets=true;Connect Timeout=30;"
    }
  }
}

NCache provides the SetNCacheSessionConfiguration() method to initialize configurations from external files before adding the session services to the container. Using this method, you can refer to the configurations by providing the name of the section containing JSON format configurations in Appsettings.json:

public void ConfigureServices(IServiceCollection services)
{ 
    //Add framework services
    services.AddMvc();

    //Add services to the container                    
    services.SetNCacheSessionConfiguration(Configuration.GetSection("NCacheSettings"));

    services.AddNCacheSession();
}

Step 2: Add Middleware to Application

Once the services have been initialized, you can now configure the HTTP request pipeline by adding middleware in the Configure() method. The following is an excerpt showing the addition of a middleware layer through the use of UseNCacheSession() extension method inIApplicationBuilder. The NCache session middleware should always be stacked before the layer that utilizes the sessions.

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
    loggerFactory.AddConsole(Configuration.GetSection("Logging"));
    loggerFactory.AddDebug();

    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
        app.UseBrowserLink();
    }
    else
    {
        app.UseExceptionHandler("/Home/Error");
    }
    app.UseStaticFiles();           

    app.UseNCacheSession(); //store NCache session data            

    app.UseMvc(routes =>
    {
        routes.MapRoute(
            name: "default",
            template: "{controller=myApp}/{action=Index}/{id?}");
    });
}
Back to top Copyright © 2017 Alachisoft