我遇到过好几次这样的情况。当开发我的应用程序然后在我的本地计算机或开发环境上运行它时,没有问题。 但当我将应用程序部署到 UAT/生产环境后,有时会遇到功能无法按预期工作的问题(与本地/开发环境相比)。
根据您的情况,本地/开发环境将由团队管理。但 UAT/PROD 由我们的合作伙伴管理。
我想分享2个案例,寻求大家的支持:
示例1:在实现IdentityServer4时,我们利用端点[endpoint]/.well-known/openid-configuration/jwks来获取密钥以进行令牌验证。这可以在本地/开发环境中无缝运行,确保成功的令牌验证。然而,在过渡到 UAT 时,会出现一个问题:随机地,代币要么成功验证,要么被拒绝。
根本原因可以追溯到我们的合作伙伴在服务器上设置了多个实例,以适应性能和可扩展性。挑战源自上传到这些服务器的两个证书,导致端点以两个不同的密钥值进行响应。如果一个实例生成的令牌由同一实例验证,则不会出现问题。但是,如果验证发生在不同的实例上,则令牌被视为无效。
幸运的是,我们通过让开发团队调查源代码和基础设施设置来解决这个问题。
示例2:在服务器端,我的合作伙伴设置了一个工具New Relic,在开发端,我们将应用程序升级到.NET 6。与上面相同,在我们的本地/开发中,我们从未设置New Relic,所以没有发现问题。 UAT部署后,出现了一些问题。我们(开发团队)花了一段时间才找出问题所在,因为他们使用了旧版本,并且该版本不支持.NET 6。
我的问题是:
我现在面临着同样的问题。你找到根本原因了吗
谢谢你