我正在使用Apache / mod_mono / MONO(2.8.1)部署ASP.NET MVC 2应用程序,该应用程序使用内置的ASP.NET身份验证框架。
当我重新启动Apache,或使用mod_mono控制面板重新启动单声道服务器进程时,用户将被注销。我不希望这种情况发生。
我正在使用自定义配置文件/成员资格/角色提供程序(由Redis数据库支持),这些目前只有最低限度的实现。我不知道我的问题在哪里适合,但是我错过了一些明显的东西吗?
我注意到.MONOAUTH cookie在用户重新登录时会更改值,所以我猜有些持久性需要发生才会发生。
任何相关文档的解决方案或指针都会很棒!
答案 0 :(得分:3)
注意:当您使用会员提供商时,我不确定以下信息是否有所不同 - 会员提供商本身可能会保留会话状态。
您可能正在使用"进程中"会话状态存储。这意味着无论何时重新启动Web服务器进程,您都要清除存储在Web服务器进程的内存空间中的所有会话信息。
为避免消除会话信息,您可以转到使用进程外会话状态服务器,作为内存服务(请参阅下面的Mono版本)或SQL Server运行。否则,还有一些使用替代存储机制的非官方自定义会话存储提供程序(例如MongoDB等)
我找到了您可能想要的内容,即Mono ASP.NET会话状态服务器:http://manpages.ubuntu.com/manpages/gutsy/man1/asp-state2.1.html
作为第一步,请查看system.web上的web.config - > sessionState属性。如果它设置为mode =" InProc"然后就是你的问题。它看起来应该更像:
<sessionState
mode="StateServer"
stateConnectionString="tcpip=server:port"
stateNetworkTimeout="number of seconds"/>
答案 1 :(得分:3)
解决方案:手动设置validationKey和decryptionKey:
&lt; machineKey validationKey =“blahblah”decryptionKey =“blahblah”/&gt;
我认为这可能是单声道中的一个错误,当自动生成时,这些错误会因服务器重置而产生不同的值(这是默认设置)。