2

我有一个 MVC 4 应用程序,并且正在使用默认身份验证提供程序。我没有使用持久性 cookie。

我在开发中没有任何问题,但是在 HostGator 上托管时,我有时会在尝试创建新项目(HTTP POST)时注销。发生这种情况时,我最终会进入登录页面,就像我没有通过身份验证一样。

HostGator 在多个 Web 服务器上没有该应用程序,所以我想我不必担心机器密钥的问题。我错了吗?

发生这种情况时,我只需再次登录并再次创建项目,它就会成功。一旦发生这种情况,我将无法重现该问题。我尝试重新打开浏览器甚至不同的浏览器,但创建项目将始终有效。如果我稍后再尝试,它似乎只会再次发生。

一些附加信息,超时设置为 2880(MVC 项目的默认值),我知道它很长,但我看不出它是如何相关的。不过,我想我会提到它。

因此,我无法查看 IIS 日志或事件查看器来了解可能发生的情况,但我可以向应用程序添加更多日志记录。任何人都可以提供有关要检查什么或要添加什么日志来诊断的想法吗?

谢谢

编辑

我意识到我可以访问 IIS 日志,所以我比较了成功的 POST 和失败的 POST,并立即注意到了一些东西。

当我第一次执行 GET 加载项目/创建页面/视图时,填充了 cs-username 但是当我执行 POST 来创建项目时,它就消失了。我可以看到,当我再次登录并能够成功创建项目时,该 POST 确实填充了 cs-username。

为什么它会在 GET 和 POST 之间消失?从 GET 到 POST 有 7 分钟的延迟,但我可以看到我在 GET 前 1 分钟登录,所以当帖子发生时会话只有 8 分钟。我已经仔细检查过我没有明确配置 sessionstate,所以默认应该是 20 分钟。我觉得我正在做某事,但不确定到底是什么。

4

1 回答 1

0

可能值得添加 Glimpse,尽管在已部署的代码上运行它有点冒险。不过,它的好处是可以让您看到服务器上实际发生的事情。我从未使用过 HostGator,所以我不能肯定地说,但如果他们积极回收应用程序池,那会使您的登录无效,并解释为什么注销似乎是随机发生的。

于 2012-11-18T02:36:10.857 回答