0

好吧,我完全被这个难住了。这是 asp.net mvc3 web 应用程序的场景,几个月来一直运行良好,但我每周都在经历补丁和新版本的新功能。代码库本身在两个独立的 iis7 windows r2 服务器上运行。其中一台服务器,我不使用标准的应用程序池身份(网络服务) - 我有一个特定的用户,因为它从文件服务器中提取一些文件,因此也需要从该目录添加/删除特定权限。

在这台服务器上,它刚刚开始在 IE9 中 99% 的时间对表单身份验证进行疯狂操作,一两次我必须在 chrome 上执行此操作,但 chome/ff 通常表现得没有问题。

问题是,一旦您登录并转到另一个页面,它就会不断响应移动对象,并再次重定向到登录页面。(有时它甚至在登录时这样做)但是会话仍然有效,因为作为模板的一部分,它显示了基于用户身份验证的菜单项,调用如下

Context.User.IsInRole(xxxx)
Request.IsAuthenticated

我已经摆弄了它,cookie会话似乎很好,一切都按应有的方式设置。

但是,如果我做一个完整的 iisreset,ie9 将工作大约 5 分钟,然后每次请求都会失败,并重定向回登录页面。

我在 Web 应用程序中根本没有使用 iframe,我的 web.config 设置是

<sessionState mode="InProc" timeout="80" />
<authentication mode="Forms">
  <forms loginUrl="~/Account/LogOn" timeout="40" slidingExpiration="true" cookieless="UseCookies" />
</authentication>

已检查时间同步,并且客户端和服务器都在 1 秒内。

所以在这个阶段,我被卡住了,我不知道去哪里进一步排除故障,或者我可以尝试什么。如果需要,我可以远程调试服务器。

当我在我的开发盒上进行本地测试时,我没有看到任何问题。

谢谢,卡梅伦

4

2 回答 2

1

问题解决了。我将应用程序池的工作进程数设置为 2,因此对于 2 个工作进程中的哪一个具有我验证的表单 cookie/会话,这是一个幸运的下降。

改回 1,应用程序按预期工作。但是,我将完全重写我的会话处理并存储在数据库中,因此我可以将此工作进程增加到 4 个左右,以提高应用程序的效率。

于 2012-06-11T23:57:49.450 回答
0

如果您正在使用FormAuthenticationTicket,请检查以下内容。

FormsAuthenticationTicket authTicket = new
                           FormsAuthenticationTicket(1, //version
                           username, // user name
                           DateTime.Now,             //creation 
                           DateTime.Now.AddDays(5), //<--- THIS  Expiration 
                           remember, //Persistent
                           userdata);
于 2012-06-08T05:06:18.460 回答