MONO / ASP.NET身份验证持久性

时间:2011-07-14 03:32:56

标签: asp.net-mvc-2 mono

我正在使用Apache / mod_mono / MONO(2.8.1)部署ASP.NET MVC 2应用程序,该应用程序使用内置的ASP.NET身份验证框架。

当我重新启动Apache,或使用mod_mono控制面板重新启动单声道服务器进程时,用户将被注销。我不希望这种情况发生。

我正在使用自定义配置文件/成员资格/角色提供程序(由Redis数据库支持),这些目前只有最低限度的实现。我不知道我的问题在哪里适合,但是我错过了一些明显的东西吗?

我注意到.MONOAUTH cookie在用户重新登录时会更改值,所以我猜有些持久性需要发生才会发生。

任何相关文档的解决方案或指针都会很棒!

2 个答案:

答案 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;

我认为这可能是单声道中的一个错误,当自动生成时,这些错误会因服务器重置而产生不同的值(这是默认设置)。