我在ASP.net 4.5 Web Forms项目中实现Microsoft最新的Identity 2.0时遇到问题。这是我的场景。。。
我已经下载了最新的Webforms。示例代码来自https://aspnet.codeplex.com/SourceControl/latest并且几乎在我的项目中执行了一个直接的端口(用于测试目的)。
在开发过程中,代码/实现工作正常,当我们移动到IIS 7.5暂存服务器时,经过一段时间(通常为3或4小时,但有所不同)后,测试用户会遇到以下问题。。。
当他们登录时,登录过程似乎正确运行,并将他们重定向回指定的返回url,但授权未完成/无法识别,他们会立即返回登录页面。
我应该说,登录页面/进程不会失败(没有错误),底层代码返回"success"(因为这是调用重定向的唯一路径),但实际机制似乎是被动的。为了证明这一点,我创建了一个测试页面,它只是简单地呼应用户的身份,即使在明显成功登录后,用户身份也是匿名的。
我找到的解决这个问题的唯一方法是重新启动web应用程序,它再次运行了一段时间。
有人能给我一些建议吗?我可以从哪里开始调试这个问题,或者可能是什么原因?
谢谢。
ASP.NET_SessionId+OWIN Cookies不发送到浏览器此页面似乎通过在应用程序启动时创建会话来解决此问题。
从@TomasDolezal的这篇伟大的分析开始,我查看了Owin和System.Web源代码。
问题是System.Web有自己的cookie信息主源,而不是Set-cookie头。Owin只知道Set Cookie标头。解决方法是确保Owin设置的任何cookie也设置在HttpContext.Current.Response.Cookies
集合中。
我创建的解决方法现在已经过时了:
请使用Microsoft建议的SystemWebCookieManager。