首页 > 解决方案 > Azure Redis - 当模式=自定义时如何在 ASP.NET 应用程序中模拟 session_end 事件?

问题描述

我正在与之合作的组织使用 Azure Redis 为其 ASP.NET 站点存储会话信息,这对我来说是一个新领域(对此没有任何经验)。

我需要在会话结束时触发一些代码(超时、被放弃等),我读到如果您保存了会话状态 InProc Session_End 将触发,但我们的组织使用会话状态的自定义设置。像这样:

<sessionState mode="InProc" customProvider="RedisSessionStateStore" stateConnectionString="tcpip=xxxx" sqlConnectionString="xxxx" cookieless="false" timeout="1000">
      <providers> 
        <add name="RedisSessionStateStore" type="Microsoft.Web.Redis.RedisSessionStateProvider" connectionString="xxx" applicationName="xxxx" retryTimeoutInMilliseconds="1000" ssl="false" />
      </providers>
</sessionState>

据我了解,在这种情况下不会触发 Session_End 事件。除了做某种计划的工作试图找到所有被放弃的会话之外,有什么方法可以捕获 Session_End 事件?

标签: asp.netsessionredisazure-redis-cache

解决方案


注意:仅当 Web.config 文件中的会话状态模式设置为 InProc 时,才会引发 Session_End 事件。如果会话模式设置为 StateServer 或 SQLServer,则不会引发事件。

这就是Session_End无法捕获事件的原因。

我想下面的博客,也许对你有用。

构建 Sitecore Redis 会话状态提供程序


推荐阅读