У нас есть сайт веб-форм ASP. NET, опубликованный в IIS, использующий Apache Ignite 2.7.6 в качестве поставщика состояния сеанса. Наш веб-сайт настроен как «клиент», и сервер воспламенения запускается из консоли (т.е. клиент воспламенения запускается отдельно). Я вижу один сервер и один клиент на консоли сервера Ignite, и в целом сеансы работают нормально. Основная проблема, с которой я сталкиваюсь, заключается в том, что ключи сессий не очищаются / не удаляются при использовании Session.Clear () или Session.RemoveAll (). С другой стороны, когда я использую Session.Remove (ключ), он работает точно так, как ожидалось.
Вот пример сценария: пользователь нажимает кнопку, и на стороне сервера у меня есть код, который очищает сеанс и перенаправляет пользователь на другую страницу. Когда я ставлю точку останова после Session.Clear () или Session.RemoveAll (), я вижу, что все ключи были удалены, но при загрузке страницы перенаправленной страницы я вижу, что все ключи все еще присутствуют в сеансе. В качестве теста я изменил код для использования Session.Remove (ключ), и он работает нормально, поэтому я не уверен, почему Clear () и RemoveAll () не работают должным образом.
Веб-приложение. config:
<igniteConfiguration xmlns="http://ignite.apache.org/schema/dotnet/IgniteConfigurationSection" clientMode="True" gridName="myGrid">
<cacheConfiguration>
<cacheConfiguration name="aspNetSessionCache" cacheMode="Partitioned" backups="0"/>
</cacheConfiguration>
<JvmOptions>
<string>-Xms512m</string>
<string>-Xmx512m</string>
</JvmOptions>
</igniteConfiguration>
Ignite config сервера:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="ignite.cfg" class="org.apache.ignite.configuration.IgniteConfiguration">
<property name="cacheConfiguration">
<list>
<!-- Partitioned cache example configuration (Atomic mode). -->
<bean class="org.apache.ignite.configuration.CacheConfiguration">
<property name="name" value="aspNetSessionCache"/>
<!-- Set cache mode. -->
<property name="cacheMode" value="PARTITIONED"/>
<!-- Set number of backups to 0-->
<property name="backups" value="0"/>
<property name="statisticsEnabled" value="true"/>
<property name="dataRegionName" value="Default_Region"/>
</bean>
</list>
</property>
<!-- Redefining maximum memory size for the cluster node usage. -->
<property name="dataStorageConfiguration">
<bean class="org.apache.ignite.configuration.DataStorageConfiguration">
<!-- Enable metrics for Ignite persistence -->
<property name="metricsEnabled" value="true"/>
<!-- Redefining the default region's settings -->
<property name="defaultDataRegionConfiguration">
<bean class="org.apache.ignite.configuration.DataRegionConfiguration">
<!-- Custom region name. -->
<property name="name" value="Default_Region"/>
<property name="metricsEnabled" value="true"/>
<!-- 10 MB initial size. -->
<property name="initialSize" value="#{10L 1024 1024}"/>
<!-- Setting the size of the default region to 150 MB. -->
<property name="maxSize" value="#{150L 1024 1024}"/>
</bean>
</property>
</bean>
</property>
</bean>
</beans>