MongoDB Session State Provider for ASP.NET
Prasanna Loganathar
| GitHub | MongoSessionProvider | 
|---|---|
| Nuget | PVL.MongoSessionProvider | 
I've been pretty impressed with the recent development of MongoDB, and it seems to me that their one biggest problem of data consistency has now been solved.
And so, I decided to give it base one of our upcoming projects fully on MongoDB. But after some Googling I found out all the session providers out there are pretty outdated using deprecated libraries, or not suited for high-performance needs.
So, here's a session provider for ASP.NET.
Installation
PM> Install-Package PVL.MongoSessionProvider
Example session document
use SessionState;
db.Sessions.find().pretty();
{
    "_id": "i2guetwsm0mgaibb1gqmodfq",
    "App": "/",
    "Created": ISODate("2013-02-21T22:27:32.091Z"),
    "Expires": ISODate("2013-02-22T22:30:59.267Z"),
    "LockDate": ISODate("2013-02-21T22:29:54.481Z"),
    "LockId": 1,
    "Timeout": 20,
    "Locked": true,
    "Items": "AQAAAP////8EVGVzdAgAAAABBkFkcmlhbg==",
    "Flags": 0
}Scheduled session cleanup command
db.Sessions.remove({"Expires" : {$lt : new Date() }})Example web.config settings
<connectionStrings>
   <add name="SessionState" connectionString="mongodb://localhost"/>
</connectionStrings>
<system.web>
    <sessionState 
            mode="Custom"
            timeout="1440"
            cookieless="false"
            customProvider="MongoSessionStateProvider">
        <providers>
            <add name="MongoSessionStateProvider"
                type="PVL.MongoSessionProvider"
                connectionStringName="SessionState"
                writeExceptionsToEventLog="false"/>
        </providers>
    </sessionState>
</system.web>