Ошибка кэша сеанса Azure

Я начал постоянно получать ошибку кэша Azure. Похоже, это связано с просроченными сеансами. Это случайная выборка - это случается со статическими файлами.

Event code: 3005 
Event message: An unhandled exception has occurred. 
Event time: 10/25/2012 9:49:15 AM 
Event time (UTC): 10/25/2012 9:49:15 AM 
Event ID: 004e617f16854e59b7a857ca542ae9fc 
Event sequence: 86004 
Event occurrence: 720 
Event detail code: 0 

Application information: 
    Application domain: /LM/W3SVC/1273337584/ROOT-1-129955415508042441 
    Trust level: Full 
    Application Virtual Path: / 
    Application Path: E:\sitesroot\0\ 
    Machine name: RD00155D36A377 

Process information: 
    Process ID: 3332 
    Process name: w3wp.exe 
    Account name: NT AUTHORITY\NETWORK SERVICE 

Exception information: 
    Exception type: DataCacheException 
    Exception message: ErrorCode:SubStatus:Key referred to does not exist. Create objects based on a Key to fix the error.
   at Microsoft.ApplicationServer.Caching.DataCache.ThrowException(ResponseBody respBody)
   at Microsoft.ApplicationServer.Caching.DataCache.ExecuteAPI(RequestBody reqMsg, IMonitoringListener listener)
   at Microsoft.ApplicationServer.Caching.DataCache.InternalResetObjectTimeout(String key, TimeSpan newTimeout, String region, IMonitoringListener listener)
   at Microsoft.ApplicationServer.Caching.DataCache.c__DisplayClass68.b__67()
   at Microsoft.ApplicationServer.Caching.DataCache.ResetObjectTimeout(String key, TimeSpan newTimeout)
   at Microsoft.Web.DistributedCache.DataCacheRetryWrapper.PerformCacheOperation(Action action)
   at Microsoft.Web.DistributedCache.DataCacheForwarderBase.ResetObjectTimeout(String key, TimeSpan newTimeout)
   at System.Web.SessionState.SessionStateModule.BeginAcquireState(Object source, EventArgs e, AsyncCallback cb, Object extraData)
   at System.Web.HttpApplication.AsyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
   at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)



Request information: 
    Request URL: http://www.beko.co.uk/Scripts/jquery.nivo.slider.pack.js 
    Request path: /Scripts/jquery.nivo.slider.pack.js 
    User host address: 80.2.72.81 
    User:  
    Is authenticated: False 
    Authentication Type:  
    Thread account name: NT AUTHORITY\NETWORK SERVICE 

Thread information: 
    Thread ID: 11 
    Thread account name: NT AUTHORITY\NETWORK SERVICE 
    Is impersonating: False 
    Stack trace:    at Microsoft.ApplicationServer.Caching.DataCache.ThrowException(ResponseBody respBody)
   at Microsoft.ApplicationServer.Caching.DataCache.ExecuteAPI(RequestBody reqMsg, IMonitoringListener listener)
   at Microsoft.ApplicationServer.Caching.DataCache.InternalResetObjectTimeout(String key, TimeSpan newTimeout, String region, IMonitoringListener listener)
   at Microsoft.ApplicationServer.Caching.DataCache.c__DisplayClass68.b__67()
   at Microsoft.ApplicationServer.Caching.DataCache.ResetObjectTimeout(String key, TimeSpan newTimeout)
   at Microsoft.Web.DistributedCache.DataCacheRetryWrapper.PerformCacheOperation(Action action)
   at Microsoft.Web.DistributedCache.DataCacheForwarderBase.ResetObjectTimeout(String key, TimeSpan newTimeout)
   at System.Web.SessionState.SessionStateModule.BeginAcquireState(Object source, EventArgs e, AsyncCallback cb, Object extraData)
   at System.Web.HttpApplication.AsyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
   at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)

Кода вокруг этого нет, он настраивается в web.config

<dataCacheClients>
  <dataCacheClient name="default">
    <hosts>
      <host name="[mycachename]" cachePort="22233" />
    </hosts>
    <securityProperties mode="Message">
      <messageSecurity authorizationInfo="[mykey]"></messageSecurity>
    </securityProperties>
  </dataCacheClient>
  <dataCacheClient name="SslEndpoint">
    <hosts>
      <host name="[mycachename]" cachePort="22243" />
    </hosts>
    <securityProperties mode="Message" sslEnabled="true">
      <messageSecurity authorizationInfo="[mykey]"></messageSecurity>
    </securityProperties>
  </dataCacheClient>
</dataCacheClients>

Изменить: состояние сеанса настраивается следующим образом:

<sessionState mode="Custom" customProvider="AppFabricCacheSessionStoreProvider">
  <providers>
    <add name="AppFabricCacheSessionStoreProvider" type="Microsoft.Web.DistributedCache.DistributedCacheSessionStateStoreProvider, Microsoft.Web.DistributedCache" cacheName="default" useBlobMode="true" dataCacheClientName="default" />
  </providers>
</sessionState>

Я пытаюсь понять, есть ли а) Все, что я могу сделать, чтобы исправить это в конфигурации б) Какие DLL задействованы и какая последняя версия (чтобы я мог видеть, помогает ли обновление) в) Если кто-то еще видит это.

Это началось после того, как я сделал довольно много обновлений приложений, а также обновил размер кеша в Azure. Не уверен, поэтому, в чем была причина. Я бы не подумал, что за это ответственны изменения кода, но, возможно, мы обновили некоторую DLL, поскольку один из компьютеров, которые мы использовали в процессах разработки, был недавно построен.


person Andiih    schedule 25.10.2012    source источник
comment
Вы добавили конфигурацию для настраиваемого поставщика sessionState в webconfig? Это единственная часть, которую вы добавили в webconfig для использования кеша Azure для обработки сеанса?   -  person Ruchit Rami    schedule 25.10.2012
comment
Вы также добавили провайдера для sslendpoint?   -  person Ruchit Rami    schedule 25.10.2012
comment
разве это не раздел ‹dataCacheClient name = SslEndpoint› в моем вопросе выше? Есть еще что-нибудь?   -  person Andiih    schedule 25.10.2012
comment
По моему мнению, для провайдеров в ‹sessionState› вам нужно добавить другого провайдера с dataCacheClientName = SslEndpoint.   -  person Ruchit Rami    schedule 25.10.2012
comment
Как /Scripts/jquery.nivo.slider.pack.js добавляется в кеш данных? У вас есть несколько экземпляров или только один экземпляр роли?   -  person SliverNinja - MSFT    schedule 25.10.2012
comment
несколько экземпляров и его кеш сеанса (я думаю). Дело не в том, что файл добавляется в кеш, а в том, что его запрос (на что угодно) запускает проверку сеанса. Не уверен, почему !?   -  person Andiih    schedule 25.10.2012


Ответы (1)


Я обновил azure.caching и azure.configuration через nuget, а затем повторно опубликовал, и теперь ошибка исчезла, никакой другой код или конфигурация не изменились, поэтому похоже, что это была несовместимость между версиями DLL где-то.

person Andiih    schedule 28.10.2012