2011-05-06 2 views
2

Avoir le prochain problème: je configure le serveur d'état de session personnalisé (stocker des sessions dans Mysql). Mais les données de session ne sont pas ajoutées à la base de données (la table de session .net par défaut est vide), mais l'autorisation fonctionne (!). Si je change l'option coockieless à true, les données de session commencent à être ajoutées à la base de données (mais je ne veux pas utiliser coockieless = true).
Problème sessionState sur .net mvc (MySQL)

Parfois, je pense que le cadre choisir ce qu'il faut utiliser: inproc ou mon magasin personnalisé ...

Ma config:

<sessionState mode="Custom" cookieless="false" timeout="20" customProvider="MySqlSessionStateStore"> 
     <providers> 
     <add name="MySqlSessionStateStore" type="MySql.Web.SessionState.MySqlSessionStateStore, MySql.Web, Version=6.3.6.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" applicationName="/" description="" connectionStringName="MySqlMembershipConnection" writeExceptionsToEventLog="False" autogenerateschema="True" /> 
     </providers> 
    </sessionState> 
    <authentication mode="Forms"> 
     <forms loginUrl="~/Account/LogOn" timeout="2880" /> 
    </authentication> 
    <membership defaultProvider="MySqlMembershipProvider"> 
     <providers> 
     <clear /> 
     <add name="MySqlMembershipProvider" type="MySql.Web.Security.MySQLMembershipProvider, MySql.Web, Version=6.3.6.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" applicationName="/" description="MySQL default application" connectionStringName="MySqlMembershipConnection" writeExceptionsToEventLog="False" autogenerateschema="True" enablePasswordRetrieval="False" enablePasswordReset="True" requiresQuestionAndAnswer="False" requiresUniqueEmail="True" passwordFormat="Hashed" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" passwordStrengthRegularExpression="" /> 
     </providers> 
    </membership> 
    <profile defaultProvider="MySqlProfileProvider"> 
     <providers> 
     <clear /> 
     <add name="MySqlProfileProvider" type="MySql.Web.Profile.MySQLProfileProvider, MySql.Web, Version=6.3.6.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" applicationName="/" description="" connectionStringName="MySqlMembershipConnection" writeExceptionsToEventLog="False" autogenerateschema="True" /> 
     </providers> 
    </profile> 
    <roleManager enabled="true" defaultProvider="MySqlRoleProvider"> 
     <providers> 
     <clear /> 
     <add name="MySqlRoleProvider" type="MySql.Web.Security.MySQLRoleProvider, MySql.Web, Version=6.3.6.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" applicationName="/" description="" connectionStringName="MySqlMembershipConnection" writeExceptionsToEventLog="False" autogenerateschema="True" /> 
     </providers> 
    </roleManager> 
    <connectionStrings> 
    <add name="photostorageEntities" connectionString="metadata=res://*/Models.Photos.csdl|res://*/Models.Photos.ssdl|res://*/Models.Photos.msl;provider=MySql.Data.MySqlClient;provider connection string=&quot;server=ip;User Id=user;password=pass;Persist Security Info=True;database=photostorage; Charset=utf8&quot;" providerName="System.Data.EntityClient" /> 
    <add name="MySqlMembershipConnection" connectionString="Data Source=ip;userid=user;password=pass;database=photostorage;Charset=utf8" providerName="MySql.Data.MySqlClient" /> 
    </connectionStrings> 
+0

Votre code semble correct. Que disent les journaux? Essayez de définir writeExceptionsToEventLog = "true" et vérifiez-les. Le guide à http://dev.mysql.com/doc/refman/5.1/en/connector-net-tutorials-asp-roles.html suggère de modifier certaines valeurs de machine.config au lieu de le faire dans le fichier web.config. Je ne connais pas bien cette bibliothèque - je ne suis pas sûr que cela compte ou non. Avez-vous essayé cela? –

Répondre

0

fixe en utilisant la chaîne de connexion séparée pour les sessions (je ne sais pas sachez pourquoi cela ne fonctionne pas autrement)

Questions connexes