in MySql.Web/src/SessionProvider.cs [142:225]
public override void Initialize(string name, NameValueCollection config)
{
//Initialize values from web.config.
if (config == null)
throw new ArgumentException("config");
if (name == null || name.Length == 0)
throw new ArgumentException("name");
if (String.IsNullOrEmpty(config["description"]))
{
config.Remove("description");
config["description"] = "MySQL Session State Store Provider";
}
base.Initialize(name, config);
string applicationName = HostingEnvironment.ApplicationVirtualPath;
if (!String.IsNullOrEmpty(config["applicationName"]))
applicationName = config["applicationName"];
// Get <sessionState> configuration element.
Configuration webConfig = WebConfigurationManager.OpenWebConfiguration(HostingEnvironment.ApplicationVirtualPath);
sessionStateConfig = (SessionStateSection)webConfig.SectionGroups["system.web"].Sections["sessionState"];
// Initialize connection.
connectionString = ConfigUtility.GetConnectionString(config);
if (string.IsNullOrEmpty(connectionString)) return;
writeExceptionsToEventLog = false;
if (config["writeExceptionsToEventLog"] != null)
{
writeExceptionsToEventLog = (config["writeExceptionsToEventLog"].ToUpper() == "TRUE");
}
enableExpireCallback = false;
if (config["enableExpireCallback"] != null)
{
enableExpireCallback = (config["enableExpireCallback"].ToUpper() == "TRUE");
}
// Make sure we have the correct schema.
SchemaManager.CheckSchema(connectionString, config);
app = new Application(applicationName, base.Description);
// Get the application id.
try
{
using (MySqlConnection conn = new MySqlConnection(connectionString))
{
conn.Open();
app.EnsureId(conn);
CheckStorageEngine(conn);
}
}
catch (MySqlException e)
{
HandleMySqlException(e, "Initialize");
}
try
{
using (MySqlConnection conn = new MySqlConnection(connectionString))
{
MySqlCommand cmd = new MySqlCommand(
"INSERT IGNORE INTO my_aspnet_sessioncleanup SET" +
" ApplicationId = @ApplicationId, " +
" LastRun = NOW(), " +
" IntervalMinutes = 10",
conn);
cmd.Parameters.AddWithValue("@ApplicationId", ApplicationId);
conn.Open();
cmd.ExecuteNonQuery();
cleanupInterval = GetCleanupInterval(conn, ApplicationId);
}
}
catch (MySqlException e)
{
HandleMySqlException(e, "Initialize");
}
// Setup the cleanup timer
if (cleanupInterval <= 0)
cleanupInterval = 1;
cleanupTimer = new Timer(new TimerCallback(CleanupOldSessions), null, 0,
cleanupInterval * 1000 * 60);
}