У меня есть сайт, работающий в IIS 7.5 ASP.NET 4 с использованием MySQL Connector 6.7.4, я пытаюсь настроить его для хранения состояния сеанса в моей базе данных. Он отлично работает для начала (я могу сохранить состояние). Но когда я оставляю свой браузер открытым в течение длительного времени, а затем пытается обновить страницу, я получаю следующую ошибку:Ошибка провайдера состояния сеанса MySQL на истекших сеансах
Дублировать запись «jouwlxjdufet2fyvf4cwefn2-1» для ключ «PRIMARY»
Описание: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Сведения об исключении:
MySql.Data.MySqlClient.MySqlException: Duplicate entry 'jouwlxjdufet2fyvf4cwefn2-1' for key 'PRIMARY'
Источник ошибки:
An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.
Трассировка стека:
[MySqlException (0x80004005): Duplicate entry 'jouwlxjdufet2fyvf4cwefn2-1' for key 'PRIMARY']
MySql.Data.MySqlClient.MySqlStream.ReadPacket() +492
MySql.Data.MySqlClient.NativeDriver.GetResult(Int32& affectedRow, Int64& insertedId) +450
MySql.Data.MySqlClient.Driver.NextResult(Int32 statementId, Boolean force) +136
MySql.Data.MySqlClient.MySqlDataReader.NextResult() +1121
MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior behavior) +2648
MySql.Data.MySqlClient.MySqlCommand.ExecuteNonQuery() +140
MySql.Web.SessionState.MySqlSessionStateStore.CreateUninitializedItem(HttpContext context, String id, Int32 timeout) +553
[ProviderException: An exception occurred. Please check the event log.]
MySql.Web.SessionState.MySqlSessionStateStore.HandleMySqlException(MySqlException e, String action) +281
MySql.Web.SessionState.MySqlSessionStateStore.CreateUninitializedItem(HttpContext context, String id, Int32 timeout) +709
System.Web.SessionState.SessionStateModule.GetSessionStateItem() +304
System.Web.SessionState.SessionStateModule.BeginAcquireState(Object source, EventArgs e, AsyncCallback cb, Object extraData) +1076
System.Web.AsyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +115
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +375
Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.1008
Мой web.config содержит следующие
<system.web> <sessionState mode="Custom" cookieless="false" regenerateExpiredSessionId="false" customProvider="MySqlSessionStateProvider" timeout="20"> <providers> <add name="MySqlSessionStateProvider" type="MySql.Web.SessionState.MySqlSessionStateStore, MySql.Web, Version=6.7.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" applicationName="/skygdadmin" description="" connectionStringName="MySqlServer" writeExceptionsToEventLog="False" autogenerateschema="True" enableExpireCallback="True" /> </providers> </sessionState> ...
Я могу видеть в базе данных уже существующую запись:
Таблица: my_aspnet_sessions
SessionId: 'jouwlxjdufet2fyvf4cwefn2'
ApplicationId: '1'
Created: '2013-08-22 08:29:34'
Expires: '2013-08-22 09:49:39'
LockDate: '2013-08-22 09:29:39'
LockId: '419'
Timeout: '20'
Locked: '0'
SessionItems: [lots of stuff]
Flats: '0'
Также я вижу, что таблица my_aspnet_sessioncleanup регулярно обновляется, указывая, что сеансовая очистка работает (каждые 10 минут).
Есть ли у кого-нибудь идеи, с чего начать отладку? Thanks David
вы узнали, что причиной этого? У меня такая же проблема ... – Ami
no Я не узнал, это была моя полная пробка для использования соединителя MySQL в качестве агента состояния сеанса. Я направился в Amazon и нашел своего поставщика услуг сеанса DynamoDB, который работал как шарм. – DavKa