Проблема sessionState на .net MVC (MySQL) - PullRequest
2 голосов
/ 06 мая 2011

Возникла следующая проблема: я настроил пользовательский сервер состояний сеансов (сохранял сеансы в Mysql). Но данные сеанса не добавляются в базу данных (таблица сеансов .net по умолчанию пуста), но авторизация работает (!). Если я изменю параметр coockieless на true, данные сеанса начнут добавляться в базу данных (но я не хочу использовать coockieless = true).

Иногда я думаю, что фреймворк выбирает, что использовать: 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>

1 Ответ

0 голосов
/ 16 декабря 2011

Исправлено использование отдельной строки подключения для сеансов (я не знаю, почему это не работает по-другому)

...