Asp.net成员身份自动注销

Asp.net成员身份自动注销,asp.net,asp.net-membership,membership,Asp.net,Asp.net Membership,Membership,我最近部署了一个使用asp.net成员身份(SqlMembershipProvider)的应用程序,我不知道为什么,但它在不活动1分钟后自动注销。这种情况不会发生在我的开发环境中。我甚至将userIsOnlineTimeWindow设置为60,这应该在几分钟内完成。知道为什么会这样吗 Im部署到共享主机环境上的虚拟目录。 下面是我如何设置会员资格提供商的 <membership defaultProvider="FaceMoviesMembership" userIsOnlineTimeW

我最近部署了一个使用asp.net成员身份(SqlMembershipProvider)的应用程序,我不知道为什么,但它在不活动1分钟后自动注销。这种情况不会发生在我的开发环境中。我甚至将userIsOnlineTimeWindow设置为60,这应该在几分钟内完成。知道为什么会这样吗

Im部署到共享主机环境上的虚拟目录。 下面是我如何设置会员资格提供商的

<membership defaultProvider="FaceMoviesMembership" userIsOnlineTimeWindow="60">


<providers>
<clear/>
<add name="FaceMoviesMembership" type="System.Web.Security.SqlMembershipProvider" connectionStringName="FaceMoviesAuthConnectionString" 
         enablePasswordRetrieval="true" enablePasswordReset="true" requiresQuestionAndAnswer="false" maxInvalidPasswordAttempts="10" 
         passwordAttemptWindow="60" requiresUniqueEmail="false" passwordFormat="Clear" applicationName="FaceMoviesWeb" 
         minRequiredPasswordLength="5" minRequiredNonalphanumericCharacters="0"/>


</providers>


找到了此问题的解决方案。这里有一个摘要:

众所周知,在web场中运行时,需要指定相同的机器密钥条目。这是因为ASP.NET MVC中的FormsAuthTicket或AntiForgeryToken等默认情况下使用机器密钥值加密详细信息。否则,当用户负载平衡到不同的服务器时,用户将被重定向回登录表单,或者验证将失败。在FormsAuth的情况下,当解密的结果与cookie不匹配时会发生这种情况。导致用户不断地想知道为什么他必须一次又一次地登录

两个不同的web主机提供商都遇到了这个问题,结果主机提供商启动了应用程序的几个虚拟实例。这将重新创建web场场景


找到了这个问题的解决方案。这里有一个摘要:

众所周知,在web场中运行时,需要指定相同的机器密钥条目。这是因为ASP.NET MVC中的FormsAuthTicket或AntiForgeryToken等默认情况下使用机器密钥值加密详细信息。否则,当用户负载平衡到不同的服务器时,用户将被重定向回登录表单,或者验证将失败。在FormsAuth的情况下,当解密的结果与cookie不匹配时会发生这种情况。导致用户不断地想知道为什么他必须一次又一次地登录

两个不同的web主机提供商都遇到了这个问题,结果主机提供商启动了应用程序的几个虚拟实例。这将重新创建web场场景


如上所述,您的问题可能是一个实例问题

用于加密/解密/哈希的动态生成的machineKey在每台机器上都会不同,从而导致应用程序的不同实例无法识别票证

在web.config中显式指定machineKey节将确保应用程序的所有实例都将遵守票证,无论其来源如何

在此处生成machineKey部分

并将其粘贴到应用程序的
部分,以便应用程序的所有实例都使用相同的加密密钥


这可能会解决您的问题。

如上所述,您的问题可能是一个实例问题

用于加密/解密/哈希的动态生成的machineKey在每台机器上都会不同,从而导致应用程序的不同实例无法识别票证

在web.config中显式指定machineKey节将确保应用程序的所有实例都将遵守票证,无论其来源如何

在此处生成machineKey部分

并将其粘贴到应用程序的
部分,以便应用程序的所有实例都使用相同的加密密钥

这可能会解决你的问题