【问题标题】:how to troubleshoot random logouts in asp.net application using forms authentication如何使用表单身份验证对 asp.net 应用程序中的随机注销进行故障排除
【发布时间】:2013-09-18 15:47:00
【问题描述】:

我有一个相当大规模的 Web 应用程序与运行在 Intranet 上的多个应用程序通信。默认会话超时为 20 分钟。此应用程序具有某些可编辑的小部件。此应用程序的某些用户在仅登录几分钟后在小部件上编辑数据时经历了随机注销。我没有在我的机器上看到这样的注销。如何解决此类注销问题?

应用程序日志经常有以下类型的条目

事件代码:4005 事件消息:请求的表单身份验证失败。原因:提供的票已过期。 活动时间:19/09/2013 16:19:00 活动时间(UTC):19/09/2013 15:19:00 事件 ID:bfedac01cc514bedb236347b8585a4e3 事件序列:31083 事件发生:820 事件详情代码:50202

申请信息: 应用程序域:/xx/xxxxxxx 信任级别:完全 应用程序虚拟路径:/ 应用路径:C:\xxx\xxx\ 机器名称:xxxxx

工艺信息: 进程号:56940 进程名称:w3wp.exe 帐号名称:NT AUTHORITY\NETWORK SERVICE

请求信息: 请求地址:http://www.xxxx 请求路径:/xxxxx.aspx 用户主机地址:xxx.xxx.xxx.205 用户:
是否经过身份验证:假 身份验证类型:
线程账户名:NT AUTHORITY\NETWORK SERVICE

要验证的名称:

【问题讨论】:

  • 我猜你的应用程序池正在回收。在这里查看答案:stackoverflow.com/questions/10268248/logout-on-recycle
  • 是的,我实际上已经在回答您在一小时前提出的问题中解决了这个问题:stackoverflow.com/questions/18876103/…
  • 表单身份验证 cookie 很容易在池回收中幸存下来,因为它保留在 cookie 中!事实上,如果这不起作用,这对每个人来说都是很麻烦的!
  • @dev: 是否启用了滑动过期?
  • @Thabo 是否可以在 IIS 6.0 中获取回收日志的历史记录

标签: c# asp.net


【解决方案1】:

解决此类意外注销问题的唯一可靠方法是要求用户使用 Fiddler 等客户端 http 调试器记录他们的会话。

在客户端后台打开 fiddler 运行您的应用程序将记录所有请求和响应。然后,当发生意外故障时,用户选择完整的跟踪(所有请求),将所有内容导出到文件并发送给您。

然后,作为开发人员,您打开 Fiddler,导入用户跟踪并围绕失败的请求进行分析。

您搜索的是关于 cookie 的响应行为。通常,表单身份验证 cookie 与请求一起发送到服务器,以便对用户进行身份验证。另一方面,失败的请求可能应该有no such cookie,这表明它已被以某种方式删除。

这就是有趣的地方。删除 cookie 的唯一方法是手动删除它或从删除 cookie 的服务器接收事先响应。从您的开发人员的角度来看,当您调用 FormsAuthentication.SignOut 时会触发删除 cookie。

在分析跟踪时,您只需尝试查找 罪魁祸首请求 - 请求失败的之前请求 - 导致 cookie 在客户端。

在这种罪魁祸首请求中有什么特别之处 - 它取决于您的服务器端代码,并且有许多可能的原因,从配置问题到错误代码。

但是,这绝对是您开始调查的一种方式。

【讨论】:

  • 我刚刚发现工作进程在 IIS 6 上达到 1GB 的内存限制后经常回收。我们正在使用进程会话,想知道切换到进程外选项是否会有所帮助
  • 会话不应影响您使用表单身份验证的客户端 - 身份验证在 cookie 中进行,工作进程在请求之间重新启动并不重要。如果您正确实施了表单身份验证,那么这不应该成为问题。但是,如果您有一个自定义代码以某种方式使用 Session,那么您就有麻烦了。
  • 刚刚检查了应用程序日志,而且我经常在问题中收到类似上面的信息性消息
  • 表单身份验证票已过期。我想你应该在 web.config 的身份验证部分的表单部分中将超时设置为更大的值。
猜你喜欢
  • 2021-04-26
  • 2021-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-27
  • 2015-06-10
  • 1970-01-01
相关资源
最近更新 更多