Forráskód Böngészése

2007-01-26 Hubert FONGARNAND <[email protected]>

	* SessionSQLServerHandler.cs: differentiate session between applications
	this require to add an AppName column to the aspstatetempsessions table


svn path=/trunk/mcs/; revision=76243
Marek Habersack 18 éve
szülő
commit
fa423bc998

+ 5 - 0
mcs/class/System.Web/System.Web.SessionState/ChangeLog

@@ -1,3 +1,8 @@
+2007-01-26  Hubert FONGARNAND <[email protected]>
+
+	* SessionSQLServerHandler.cs: differentiate session between applications
+	this require to add an AppName column to the aspstatetempsessions table
+
 2007-01-20  Miguel de Icaza  <[email protected]>
 
 	* SessionDictionary.cs: Removed unused variable (dirty).

+ 8 - 3
mcs/class/System.Web/System.Web.SessionState/SessionSQLServerHandler.cs

@@ -43,11 +43,12 @@ namespace System.Web.SessionState {
 		private static Type cncType = null;
 		private IDbConnection cnc = null;
 		private SessionConfig config;
+		private string AppPath = String.Empty;
                 
 		const string defaultParamPrefix = ":";
 		string paramPrefix;
-		string selectCommand = "SELECT timeout,staticobjectsdata,sessiondata FROM ASPStateTempSessions WHERE SessionID = :SessionID AND Expires > :Expires";
-		string insertCommand = "INSERT INTO ASPStateTempSessions (SessionId, Created, expires, timeout, StaticObjectsData, SessionData)  VALUES (:SessionID, :Created, :Expires, :Timeout, :StaticObjectsData, :SessionData)";
+		string selectCommand = "SELECT timeout,staticobjectsdata,sessiondata FROM ASPStateTempSessions WHERE SessionID = :SessionID AND Expires > :Expires AND AppPath = :AppPath";
+		string insertCommand = "INSERT INTO ASPStateTempSessions (SessionId, AppPath, Created, expires, timeout, StaticObjectsData, SessionData)  VALUES (:SessionID, :AppPath, :Created, :Expires, :Timeout, :StaticObjectsData, :SessionData)";
 		string updateCommand = "UPDATE ASPStateTempSessions SET expires = :Expires, timeout = :Timeout, SessionData = :SessionData WHERE SessionId = :SessionID";
 		string deleteCommand = "DELETE FROM ASPStateTempSessions WHERE SessionId = :SessionID";
 
@@ -67,7 +68,8 @@ namespace System.Web.SessionState {
 			string cncString;
 
 			this.config = config;
-
+			this.AppPath = context.Request.ApplicationPath;
+			
 			GetConnectionData (out providerAssemblyName, out connectionTypeName, out cncString);
 			if (cncType == null) {
 				Assembly dbAssembly = Assembly.Load (providerAssemblyName);
@@ -177,6 +179,7 @@ namespace System.Web.SessionState {
 			command.CommandText = selectCommand;
 			command.Parameters.Add (CreateParam (command, DbType.String, "SessionID", id));
 			command.Parameters.Add (CreateParam (command, DbType.DateTime, "Expires", DateTime.Now ));
+			command.Parameters.Add (CreateParam (command, DbType.String, "AppPath", this.AppPath));
 			command.Prepare ();
 			return command.ExecuteReader ();
 		}
@@ -225,9 +228,11 @@ namespace System.Web.SessionState {
 			IDataParameterCollection param;
 
 			command.CommandText = insertCommand;
+			
 
 			param = command.Parameters;
 			param.Add (CreateParam (command, DbType.String, "SessionID", session.SessionID));
+			param.Add (CreateParam (command, DbType.String, "AppPath", this.AppPath));
 			param.Add (CreateParam (command, DbType.DateTime, "Created", DateTime.Now));
 			param.Add (CreateParam (command, DbType.DateTime, "Expires", DateTime.Now.AddMinutes (timeout)));
 			param.Add (CreateParam (command, DbType.Int32, "Timeout", timeout));