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
但是当我无法登录时,我看不到这些。
(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.
但是我已经尝试过放入web.config;我们的系统管理员也保证我们在我们的网络服务器的服务器上使用相同的机器密钥。
我的本地方框上没有任何上述问题,只会发生在我们的测试和测试版服务器上。它在beta服务器上经常发生;从来没有发生在测试服务器上,但现在它一直在发生。另一位开发人员有时会在他的盒子上遇到问题(2)。
这是什么问题?我好几天都感到沮丧。我觉得它是IIS的问题 - 因为它永远不会发生在我的机器上(另一个开发人员可以在他的盒子上放置不同的IIS而不是我的。)
答案 0 :(得分:6)
在与开发团队和系统管理员一起检查Web服务器设置几天后,我们终于可以使用它了。
这是Asp.net Identity中的一个错误。
要解决此问题,请在对用户进行身份验证之前添加虚拟会话。所以在Page_Load()
的{{1}}函数中,添加如下内容:
Login.aspx.cs
所有问题都神奇地消失了。
原帖给了我们这个想法: ASP.NET_SessionId + OWIN Cookies do not send to browser