【问题标题】:asp.net mvc 3 forms authentication and ie9asp.net mvc 3 表单身份验证和 ie9
【发布时间】:2012-06-08 05:01:15
【问题描述】:

好吧,我完全被这个难住了。这是场景 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 秒内。

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

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

谢谢, 卡梅伦

【问题讨论】:

    标签: asp.net-mvc iis-7 internet-explorer-9 forms-authentication session-timeout


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      如果您使用的是FormAuthenticationTicket,请查看下方。

      FormsAuthenticationTicket authTicket = new
                                 FormsAuthenticationTicket(1, //version
                                 username, // user name
                                 DateTime.Now,             //creation 
                                 DateTime.Now.AddDays(5), //<--- THIS  Expiration 
                                 remember, //Persistent
                                 userdata);
      

      【讨论】:

        猜你喜欢
        • 2011-10-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-13
        • 1970-01-01
        相关资源
        最近更新 更多