间歇性地无法使用Asp.net Identity 2登录

Hir*_*eth 2 asp.net login asp.net-identity-2

Visual Studio 2013,Asp.net Identity 2.1.0

我的登录页面(默认情况下由vs2013生成),

(1)有时我可以登录

(2)有时我无法登录.如果登录失败,他们会停留在登录页面上,但在网址末尾会显示"?ReturnUrl = ...".当时打开两个浏览器,一个是IE,另一个是Chrome,然后我发现Chrome成功,IE失败了.

当我成功登录时,我通过使用Fiddler在响应头上看到了这个:

Set-Cookie: .AspNet.ApplicationCookie=MlpChRy8gmGaxxIAo9EFbGrWf4J3mm...._BqMFEFHGuu8fiCNrVvy3LzygcNxlM7snKm9-F-zYrskb4; path=/; HttpOnly
Set-Cookie: .AspNet.ExternalCookie=; path=/; expires=Thu, 01-Jan-1970 00:00:00 GMT
Set-Cookie: .AspNet.TwoFactorCookie=; path=/; expires=Thu, 01-Jan-1970 00:00:00 GMT
Run Code Online (Sandbox Code Playgroud)

但是当我无法登录时,我看不到这些.

(3)然后其他时间,我得到这个例外:

system.Web.HttpException (0x80004005): Validation of viewstate MAC failed. If this application is hosted by a Web Farm or cluster, ensure that <machineKey> configuration specifies the same validationKey and validation algorithm. AutoGenerate cannot be used in a cluster.
Run Code Online (Sandbox Code Playgroud)

但我已经尝试过放入web.config; 我们的系统管理员也向我保证,我们在Web场的服务器上使用相同的机器密钥.

我从来没有在我的本地盒子上遇到任何上述问题,它只发生在我们的测试和测试版服务器上.它在beta服务器上经常发生; 从来没有发生在测试服务器上,但现在它一直在发生.另一位开发人员有时会在他的盒子上遇到问题(2).

这里有什么问题?我好几天都感到沮丧.我觉得这是IIS问题 - 因为它永远不会发生在我的机器上(另一个开发人员可以在他的盒子上有不同的IIS与我的相比).

Hir*_*eth 7

在与开发团队和系统管理员一起检查Web服务器设置几天后,我们终于可以使用它了.

这是Asp.net Identity中的一个错误.

要解决此问题,请在对用户进行身份验证之前添加虚拟会话.所以在Page_Load()函数中Login.aspx.cs,添加如下内容:

Session["DummySession"] = "DummySession";
Run Code Online (Sandbox Code Playgroud)

所有问题都神奇地消失了.

原帖给了我们这个想法: ASP.NET_SessionId + OWIN Cookies不发送给浏览器