2011-09-12 3 views
2

J'ai une base de données fournie par l'hébergement partagé. Je veux enregistrer la session dans le serveur SQL, mais il me donne l'erreur:Asp.Net 4.0 Session de stockage dans SqlServer

Unable to use SQL Server because ASP.NET version 2.0 Session State is not installed on the SQL server. Please install ASP.NET Session State SQL Server version 2.0 or above 

[HttpException (0x80004005): Unable to use SQL Server because ASP.NET version 2.0 Session State is not installed on the SQL server. Please install ASP.NET Session State SQL Server version 2.0 or above.] 
System.Web.SessionState.SqlPartitionInfo.GetServerSupportOptions(SqlConnection sqlConnection) +2147087 
System.Web.SessionState.SqlPartitionInfo.InitSqlInfo(SqlConnection sqlConnection) +107 
System.Web.SessionState.SqlStateConnection..ctor(SqlPartitionInfo sqlPartitionInfo, TimeSpan retryInterval) +531 
System.Web.SessionState.SqlSessionStateStore.GetConnection(String id, Boolean& usePooling) +237 
System.Web.SessionState.SqlSessionStateStore.CreateUninitializedItem(HttpContext context, String id, Int32 timeout) +136 
System.Web.SessionState.SessionStateModule.CreateUninitializedSessionState() +50 
System.Web.SessionState.SessionStateModule.BeginAcquireState(Object source, EventArgs e, AsyncCallback cb, Object extraData) +659 
System.Web.AsyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +96 
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +184 

Mon WebConfig comprennent Déclaration ci-dessous.

<sessionState mode="SQLServer" 
     cookieless="true" 
     regenerateExpiredSessionId="true" 
     timeout="30" 
     allowCustomSqlDatabase="true" 
     sqlConnectionString="Data Source=hostingServer;Initial   catalog=MyDatabase;User Id=MyUser;password=MyPassword;" 
     stateNetworkTimeout="60"/> 

J'ai exécuté aspnet_regsql.exe. Il m'a demandé sur le serveur et le détail de connexion après qu'il a créé aspNret_TableNames.

Veuillez me guider.

Répondre

13

Je crois que vous devez avoir utilisé l'application aspnet_regsql.exe qui démarre ensuite un assistant, puis ajoute diverses tables aspnet_ * à vos tables.

Si tel est le cas, redémarrez le même assistant, puis choisissez l'option Supprimer pour supprimer toutes ces tables de la base de données.

Maintenant, exécutez la commande suivante:

aspnet_regsql.exe -ssadd -d <Your Database> -sstype c -S <Server> -U <Username> -P <Password> 

Cela ajoutera ensuite deux tables à votre base de données, à savoir ASPStateTempApplications & ASPStateTempSessions.

Modifier votre fichier web.config pour inclure la configuration suivante:

<sessionState 
    mode="SQLServer" 
    allowCustomSqlDatabase="true" 
    sqlConnectionString="Data Source=Server;Initial Catalog=Database;User ID=UserId;Password=Password" 
    cookieless="false" timeout="20" /> 

REMARQUE: 1. Je suppose que vous voulez stocker session dans votre base de données des applications. Si vous souhaitez gérer la base de données de session séparément, exécutez la commande ci-dessus sans le paramètre "-d". Cela créera une nouvelle base de données ASPState avec deux tables que j'ai spécifiées ci-dessus. Et enfin, vous pouvez spécifier le nom de cette base de données dans votre configuration.

Hope this helps :)

+0

je l'avais laissé tomber l'utiliser maintenant je vais donner un essai à votre solution –

+0

Hey démon, grande solution :)) –

+0

Vous venez d'enregistrer ma journée! –

Questions connexes