我正在开发一个带有dev,staging和bluegreen插槽的Azure应用程序。身份验证由Azure AD处理,用户将重定向到microsoftonline登录页面。我昨天下载了每个插槽的发布配置文件并发布了这三个。我在多台计算机和浏览器上测试了它们,并且所有三个插槽都正常工作。
今天早上我再次测试了它们,只有开发槽工作。 Staging和bluegreen都重定向到登录页面,但一旦通过身份验证,可怕的无限重定向循环就会接管。
该网站需要SSL,但这似乎与问题无关。当插槽工作时,通过HTTP或HTTPS访问它们都正确地重定向到HTTPS。
回复网址也已全部设置,似乎与问题无关。
我不确定接下来要看什么。是否有定期运行的Azure进程可能会影响插槽?为什么插槽会工作几个小时然后停止工作?
循环:(发送请求到[app] - [slot] .azurewebsites.net =>等待[app] - [slot] .azurewebsites.net =>等待login.microsoftonline.com =>发送请求到[app] - [slot] .azurewebsites.net)等等。
答案 0 :(得分:1)
事实证明,这个问题是由微软Owin为System.Web实现的半知名错误引起的:Katana Bug#197。甚至还有一个nuget包,其唯一目的是提供一个解决方法,直到修复bug。截至2017年4月,nuget包已下载96,000次。
来自Kentor.OwinCookieSaver nuget包的readme.md:
“臭虫让Owin设置的cookie神秘地消失了 场合“。
解决方法很简单。添加nuget包Kentor.OwinCookieSaver,然后在处理cookie中间件之前添加KentorOwinCookieSaver中间件。
添加:
app.UseKentorOwinCookieSaver();
在此之前:
app.UseCookieAuthentication(new CookieAuthenticationOptions());
如果您想了解更多内容,请参阅以下链接: Owin Cookie Saver Repo,Katana Project Bug #197