Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
某些ASP.Net WebForms应用程序用户的双重登录_Asp.net_Forms Authentication - Fatal编程技术网

某些ASP.Net WebForms应用程序用户的双重登录

某些ASP.Net WebForms应用程序用户的双重登录,asp.net,forms-authentication,Asp.net,Forms Authentication,我有一个使用表单身份验证的asp.NETWebForms应用程序。对于少数用户,我们有一个问题,他们登录,他们导航到几个页面,然后要求他们再次登录。一旦第二次登录,他们似乎能够像预期的那样保持登录状态。不应该要求他们第二次登录 这是一个单一的服务器,没有网络农场,没有什么棘手的 这种情况只发生在少数用户身上,但似乎所有用户都来自同一栋大楼。我无法复制这一点,在这一点上,我甚至可能会开始否认,如果我们的培训师没有看到它发生在几个客户身上,这种情况就发生了 还有人见过这样的东西吗 我还在事件日志中看

我有一个使用表单身份验证的asp.NETWebForms应用程序。对于少数用户,我们有一个问题,他们登录,他们导航到几个页面,然后要求他们再次登录。一旦第二次登录,他们似乎能够像预期的那样保持登录状态。不应该要求他们第二次登录

这是一个单一的服务器,没有网络农场,没有什么棘手的

这种情况只发生在少数用户身上,但似乎所有用户都来自同一栋大楼。我无法复制这一点,在这一点上,我甚至可能会开始否认,如果我们的培训师没有看到它发生在几个客户身上,这种情况就发生了

还有人见过这样的东西吗

我还在事件日志中看到很多“会员资格凭证验证失败”错误。这可能与此相关,但我所做的所有谷歌搜索似乎都指向网络农场等,而不是单一服务器

更新

  • 没有代理服务器,IIS服务器和浏览器(IE8)都在同一台计算机上
  • 安装的AV软件是Symantec Endpoint,在一台机器上,在另一台机器上,用户根本没有任何AV(AV失败!)
  • 浏览器是IE 8,没有任何装饰,没有一个没有默认安装的插件
  • 会话和用户登录超时都设置为30分钟,并且问题在用户登录后1分钟内发生
  • 日志记录显示用户只有一个IP地址
  • 我尝试过sessionMode的所有变体,这似乎没有任何区别

  • 用户是否可能来自动态ip地址?我看到过这样的问题:由于某些原因,用户访问站点的IP地址发生了变化,用户会话出现了混乱。

    一定是什么原因导致ASP.NET认为这些用户有新会话,或者他们的身份验证cookie失效。以下是我可以考虑检查的几件事:

  • 用户是否通过代理服务器访问站点?我们的一个客户有一个代理,该代理有时会关闭所有打开的连接,从而使ASP.NET将会话视为新会话
  • 一个过度攻击性的反病毒、反间谍软件产品会“吃掉”会话验证cookie吗
  • 他们是否有导致验证cookie消失或更改的cookie管理器浏览器加载项
  • 听起来很基本,但我见过这种情况发生,因为网站超时设置得太短。如果用户在页面上停留的时间超过了超时时间,他们将被迫再次登录。这可能是特定于一个页面,当该页面显示大量数据时,他们需要一段时间才能通过

  • 我刚才想到的另一件事是,您是否允许ASP.NET进程(又名web gardens)使用多个工作进程?如果是这样,与web场相同的约束将适用于身份验证。

    ASP.NET表单身份验证可以将用户重定向到登录页面,前提是他们没有访问特定页面的凭据。它这样做是为了让可能有多个登录的用户有机会使用另一个可能具有适当访问权限的帐户登录。基本问题我知道,但用户在第二次登录时是否使用了相同的凭据?

    发生这种情况的人是否使用了某种不同的浏览器(不同的浏览器、不同的版本、不同的扩展)?这可能是个线索

    通常,当问题在某种程度上是可重复的或至少是可预测的时,我使用。在客户端机器上安装它,打开它,然后开始浏览(这是通过系统代理工作的——因此它适用于firefox、IE和任何其他支持代理的浏览器)。Fiddler将记录客户端和服务器之间的所有http通信量,然后您可以稍后仔细阅读此类会话以发现任何异常


    这是一个很长的机会,但我看到偶尔发生的一件事可能会导致这些不可预测的错误,那就是脚本并行化问题:有时按钮+链接有onclick处理程序,这会导致回发。如果您有多个这样的处理程序在同一事件上触发—特别是当默认事件仍然在自定义onclick或诸如此类的事件之外触发时—当它看起来只是一个回发时,您可能会导致多个回发。这可能会导致各种不可预测的奇怪,因为不完全清楚哪一个请求最终“获胜”——一些奇怪的错误可能会导致会话终止。由于这种行为对浏览器+网络延迟非常敏感,因此发生这种情况时似乎非常不可预测。

    从问题用户的PC上打开,看看标题中传递了什么。我打赌是代理服务器和/或网络问题。

    可能是您没有特别指定asp.net使用基于cookie的会话,但允许cookie或无cookie会话

    在后一种情况下,会话id嵌入到Url中。你所经历的问题类型可能就是这样解释的。基本上取决于如何定义链接,其中一些链接将无法获得会话id,因此用户在使用这些链接时将获得一个新会话,或者可能在重定向过程中。这可以解释为什么在你的网站的特定部分,用户会放松他们的会话

    如果您启用了混合模式,请尝试将其设置为仅无cookieless并浏览您的站点


    更新:根据发布的额外信息,肯定需要更多信息。一些额外的东西需要检查:

    • 您是否使用子域,如果是这种情况,cookie可能未配置为允许,并且不会在所有环境中失败
    • 如果您正在使用进程内会话,请确保应用程序中没有bug