asp.net“记住我”不再使用表单身份验证

asp.net“记住我”不再使用表单身份验证,asp.net,asp.net-membership,forms-authentication,Asp.net,Asp.net Membership,Forms Authentication,我有两个网站,它们有自己编写的会员资格提供者,它们在同一个服务器上的同一个网站上的不同Web应用程序和不同的应用程序池中托管 以前我有一个问题,我不能同时登录这两个网站。多亏了Remy的,现在可以工作了,我不得不将name属性添加到forms元素中。 但是现在我有一个问题,asp登录控件的记住我选项停止工作。用户在正常会话超时后注销 web.config文件中的身份验证属性如下所示: <authentication mode="Forms" > <forms loginUr

我有两个网站,它们有自己编写的会员资格提供者,它们在同一个服务器上的同一个网站上的不同Web应用程序和不同的应用程序池中托管

以前我有一个问题,我不能同时登录这两个网站。多亏了Remy的,现在可以工作了,我不得不将name属性添加到forms元素中。 但是现在我有一个问题,asp登录控件的记住我选项停止工作。用户在正常会话超时后注销

web.config文件中的身份验证属性如下所示:

<authentication mode="Forms" >
  <forms loginUrl="~/UserMgmt/Login.aspx" timeout="400000" slidingExpiration="true" name="NameOfTheSite"/>
</authentication>
我还将表单授权的cookie名称设置为不同的名称

我是否还需要添加其他内容,以使“记住我”功能正常工作

更新 我观察到,如果我禁用表单身份验证cookie的加密和验证,问题就消失了。如果我激活加密、验证或两者都激活,则问题会再次出现。 我还知道,它独立于会话cookie名称,它们甚至可能是相同的。也许这些信息有助于人们了解到底发生了什么

更新1 感谢Jason Kealey为这个问题提供的解决方案。我永远也找不到它。 同时,我在msdn中找到了相应的信息。在里面 在Web场部署注意事项一节中编写了:


如果要将应用程序与同一服务器上的其他应用程序隔离,请将放置在服务器场中每台服务器上每个应用程序的Web.config文件中。请确保为每个应用程序使用单独的键值,但在服务器场中的所有服务器上复制每个应用程序的键值。

请尝试设置域名,以确保在所有情况下都正确设置了“记住”的cookie

<forms  path="/" domain="nameof.com" ...the rest

问题可能是您有验证密钥,这些密钥在每次启动辅助进程时自动生成。cookie是加密的,但当您返回时,会使用新的服务器端密钥,因此无法解密cookie

查看machineKey部分

下面是一些将为您生成machineKey部分的内容

cookie超时也受IIS限制,默认值为20分钟。 要更改此设置,请执行以下操作:

打开IIS管理器。 右键单击您的站点并选择 财产。 选择ASP.NET选项卡并单击 编辑配置。 选择“身份验证”选项卡。 选择启用滑动过期。 将Cookie超时设置为更长的时间 价值设为30 天,输入 30.00:00:00. 单击确定并退出IIS管理器。
这就是我所拥有的。你删除了现有的cookies吗?@Remy:没有,没有成功,但无论如何这是个好主意!如果将超时时间改为7天10080而不是277+400000天,会发生什么情况?@Mark Schultheiss:不,我试过了,但没有效果。+1这方面也没有运气,但是,指定域,特别是设置路径是一次尝试。@HCL还要检查匿名cookie设置。我必须承认,我不明白你的答案是什么意思,因为我对asp.net的了解很少。工人流程是什么?为什么要重新启动。这就是IIS承载web的过程吗?如果是,为什么只有当我有两个成员资格提供者时才会出现此问题。如果我只有一个,一切都很好。此外,如果我阅读链接文档,他们都会说,如果我的应用程序在web服务器场中运行,或者如果我想在应用程序之间共享登录,我应该配置机器密钥部分。但我不想两者兼而有之,明确地说,不想在应用程序之间共享登录名。鉴于禁用验证可以让一切正常工作,我相信每次重置应用程序池IIS工作进程时,它都会生成一个新密钥,用于在用户返回您的站点时验证其cookie。它可以因不活动或多种原因而重置。新密钥无法解密上次访问的内容,因为它与初始密钥不同。尝试添加使用上述工具生成的内容,并让我们知道它是否有效。考虑到事实,我相信这是最有可能的解决方案。+1,接受并奖励!现在,阅读了正确的文档,一切似乎都很清楚,但如果没有正确的链接,我就不会找到解决方案。谢谢