2011-05-06 92 views
2

有下一个问题:我设置了自定义会话状态服务器(将会话存储在Mysql中)。但会话数据未添加到数据库中(默认的.net会话表为空),但授权有效(!)。如果我将coockieless选项更改为true,会话数据开始添加到数据库(但我不想使用coockieless = true)。
在.net mvc会话状态问题(MySQL)

有时我想,框架选用什么:INPROC或我的客户商店...

我的配置:

<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

您的代码看起来正确。日志说什么?尝试设置writeExceptionsToEventLog =“true”并检查它们。 http://dev.mysql.com/doc/refman/5.1/en/connector-net-tutorials-asp-roles.html上的指南建议更改一些machine.config值,而不是在web.config中执行。我不太了解那个图书馆 - 我不确定这是否重要。你尝试过吗? – 2011-05-13 14:26:37

回答

0

使用分离的连接字符串的会议(我没有固定知道为什么它不以其他方式工作)