azure - 从 VS2015 开始将 WebApp 部署到 Azure,实现零停机

标签 azure asp.net-identity asp.net-core azure-web-app-service asp.net-identity-3

我正在尝试在不停机的情况下从 VS 发布我的 Web 应用程序。如果您在 Google 中搜索,您会发现官方文档谈到了使用插槽并稍后进行交换。

这是一个很好的方法,但是当我进行交换时,我遇到了其他问题,登录丢失了(看看这个问题:link)。

链接中的相关信息:

session 未链接到身份验证,您尝试以错误的方式解决它。

所有表单例份验证票证和 cookie 均使用数据保护层进行加密和签名。您遇到的问题是由于未保存加密 key 以及应用程序相互隔离造成的。

我怎样才能做到这一点?在 AWS 中,我进行了滚动更新...

有关详细信息,我正在使用 ASP.NET Core 和 Identity 3.0

谢谢!!

最佳答案

您现在看到的是 azure 的限制。虽然 Azure 网站将共享 key 环,但它将交换槽视为单独的应用程序。

有一些事情可以尝试。

首先,设置一个通用的应用程序名称。这会有所帮助,因为默认情况下共享 key 环的每个应用程序都是隔离的;但如果他们共享应用程序名称,他们就可以共享 key

public void ConfigureServices(IServiceCollection services)
{
    services.AddDataProtection();
    services.ConfigureDataProtection(configure =>
    {
        configure.SetApplicationName("my application");
    });
}

如果这对于 azure 来说还不够(老实说,我不确定热交换最终是否使用 Azure Web App 的共享 key 文件夹),您可以将其与使用 Azure 数据表存储加密 key 结合起来 - https://github.com/GrabYourPitchforks/DataProtection.Azure/tree/dev

在这两者之间,它应该获取用于保护应用程序之间共享的身份 cookie 的加密 key 。

关于azure - 从 VS2015 开始将 WebApp 部署到 Azure,实现零停机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36515670/

相关文章:

azure - 如何配置 Azure 移动服务以填充自定义仪表板

azure - 我可以使用基于 ID 的链接在 Azure DocumentDb 中使用服务器端 Javascript 来读取文档吗?

azure - 如何在 Azure Web 作业中实例化 OWIN IDataProtectionProvider?

c# - 如何根据多个条件使用 Linq 查找特定项目?

c# - 无法使用 GraphServiceClient 创建具有应用程序身份的在线 session

Azure Function 详细记录内部服务器错误

c# - ASP.NET 身份并发登录

c# - centos 8 中 docker build net core 5.0 报错 NET SDK is not installed

Angular 7 与 .net core 2.1 - 针对特定页面启动

javascript - 找出在 foreach 循环中按下了哪个按钮