好的,这是一个非常奇怪的问题,我什至不知道如何正确描述它。我们有一位客户抱怨我们网站上的特定页面无法正常工作,我们的一位内部技术人员也能够重现该问题。大部分网站运行良好。这部署在 Azure 应用服务上。
我检查了与技术人员运行完全相同的页面,它对我来说工作得很好。整个请求是相同的,除了身份验证 cookie。当我运行请求时,我得到 200 OK,但技术人员和客户得到 404 NOT FOUND。
这个问题是在我们今天早上在 Azure 应用服务(我是新手)上进行 VIP 交换之后才开始的。我今天早上将服务更新部署到了 Staging Deployment Swap,然后几分钟后进行了 VIP Swap。我认为客户和技术人员在 VIP 交换期间都打开了浏览器并且会话处于活动状态。
我做了一些故障排除,这就是我发现的。我可以使用 Fiddler 来捕获适合我的网页的确切跟踪。然后我只能从得到 404 错误的技术人员的请求中复制一个值,突然我也可以重现 404 错误。不同的是一个cookie:
Cookie: ARRAffinity=blahblahblahblah;
我的基本理解是,这是识别用户连接到哪个服务器的关键,因此他们可以与负载平衡集中的特定实例(2 个服务器)建立关联。我们可以通过让技术人员和客户删除浏览器中的所有 cookie 来解决问题,但即使注销并重新登录也无法解决问题。
为什么“陈旧”的关联密钥会在一个特定页面上导致随机 404?是否有可能某些用户的请求实际上被定向到旧的登台部署站点,即使他们正在访问连接到生产部署站点的 url?