Multi-Site Sessions
NCache provides Session sharing support across multiple regions. This prevents users from losing their sessions in case you need to reroute your traffic to another location because of traffic or due to disaster recovery. Sessions are replicated across WAN seamlessly without replicating the entire session which may result in bandwidth expense. Figure 1 shows the process flow associated with session sharing across multiple regions.
Prerequisites
To utilize ASP.NET Session State provider in your application, install the AspNet.SessionState.NCache NuGet package by executing the following command in the Package Manager Console:
Install-Package AspNet.SessionState.NCache
Add New Section for Session State Management
Modify the <configSections>
section in the application's Web.config and add the following section which will specify the locations and primary and secondary caches.
<configSections>
<section name="ncache" type="Alachisoft.NCache.Web.SessionStateManagement.NCacheSection,
Alachisoft.NCache.SessionStateManagement, Version=x.x.x.x, Culture=neutral, PublicKeyToken=CFF5926ED6A53769">
</configSections>
Note
Replace "x.x.x.x" with the version of NCache you are using.
Modify Web.Config
Add a section with the section name specified above (<ncache>
in this case), under the <configuration>
tag in your application's Web.config:
<ncache>
<sessionLocation>
<primaryCache id="London_Cache" sid-prefix="LDNC"/>
<secondaryCache id="NewYork_Cache" sid-prefix="NYKC"/>
<secondaryCache id="Tokyo_Cache" sid-prefix="TKYC"/>
</sessionLocation>
</ncache>
Modify sessionState Tag
Enable the custom sessionID
manager using the sessionIDManagerType
attribute of the sessionState
element in Web.config and add a custom provider.
Member | Description |
---|---|
sessionIDManagerType |
Optional String attribute. Specifies an identifier to make sure that the session ID remains unique in case multiple applications are using the same cache. Application ID should be the same for an application in a web farm. If no app ID is specified, nothing will be concatenated with the session ID. |
<sessionState
cookieless ="false"
regenerateExpiredSessionId="true"
mode="Custom"
customProvider="NCacheSessionProvider"
timeout="60" sessionIDManagerType="Alachisoft.NCache.Web.SessionStateManagement.CustomSessionIdManager, Alachisoft.NCache.SessionStateManagement">
<providers>
<add name ="NCacheSessionProvider"
type="Alachisoft.NCache.Web.SessionState.NSessionStoreProvider"
sessionAppId="demoApp"
cacheName="demoCache"
writeExceptionsToEventLog="false"
asyncSession="false"
enableLogs="false"/>
</providers>
</sessionState>
Note
It is not recommended to use the WriteExceptionsToEventLog
tag in a Production environment.
- When Location Affinity is enabled,
cacheName
specified in the<providers>
section of Web.config will be ignored. - Cookieless sessions are not supported.
Additional Resources
NCache provides a sample application for NCache ASP.NET Sessions on GitHub.
See Also
.NET: Alachisoft.NCache.Web.SessionState namespace.