从 VS2015 零停机时间将 WebApp 部署到 Azure
Deploy WebApp to Azure with Zero downtime from VS2015
我正在尝试在不停机的情况下从 VS 发布我的 Web 应用程序。如果您在 Google 中搜索,您会找到官方文档中关于使用插槽并稍后进行交换的内容。
这是一个很好的方法,但是我在进行交换时遇到了其他问题,登录丢失(看这个问题:)。
相关资料在link:
会话未link验证,您试图以错误的方式解决它。
所有表单身份验证票证和 cookie 均使用数据保护层进行加密和签名。您遇到的问题是由于加密密钥未保存,应用程序相互隔离所致。
我该怎么做?在 AWS 中,我进行了滚动更新...
有关更多信息,我正在使用 ASP.NET Core with Identity 3.0
谢谢!!
您使用的是内存中的会话状态吗?
'logins' 的问题是 'lost' 是架构问题,而不是更新网络应用程序的问题。
为会话状态使用 RedisCache 之类的东西。它不仅会在您更新应用程序时持续存在,而且还会处理多个服务器实例上的负载平衡。事实上,除了更新您的应用程序时,当您扩展到多个服务器时,您可能会遇到这个问题。
您现在看到的是天蓝色的限制。虽然 Azure 网站将共享密钥环,但它将交换槽视为单独的应用程序。
有几件事可以尝试。
首先,设置一个通用的应用名称。这将有所帮助,因为默认情况下,共享密钥环的每个应用程序都是隔离的;但如果他们共享应用程序名称,他们就可以共享密钥
public void ConfigureServices(IServiceCollection services)
{
services.AddDataProtection();
services.ConfigureDataProtection(configure =>
{
configure.SetApplicationName("my application");
});
}
如果这对 azure 来说还不够(老实说,我不确定热交换是否最终会使用 Azure Web App 的共享密钥文件夹),您可以将其与使用 Azure 数据表相结合来存储加密密钥 - https://github.com/GrabYourPitchforks/DataProtection.Azure/tree/dev
在这两者之间,它应该获得用于保护在您的应用程序之间共享的身份 cookie 的加密密钥。
我找到了 aspnet core 1.0 的分支,对于那些感兴趣的人:
https://github.com/prajaybasu/DataProtection.Azure/tree/dev/DataProtection.Azure
就像另一个一样,它将加密密钥存储在 azure 存储帐户中。
彻底解决了我的问题。
从 blowdart 的解决方案开始,我解决了我的问题,非常感谢。
安德里亚
我正在尝试在不停机的情况下从 VS 发布我的 Web 应用程序。如果您在 Google 中搜索,您会找到官方文档中关于使用插槽并稍后进行交换的内容。
这是一个很好的方法,但是我在进行交换时遇到了其他问题,登录丢失(看这个问题:
相关资料在link:
会话未link验证,您试图以错误的方式解决它。
所有表单身份验证票证和 cookie 均使用数据保护层进行加密和签名。您遇到的问题是由于加密密钥未保存,应用程序相互隔离所致。
我该怎么做?在 AWS 中,我进行了滚动更新...
有关更多信息,我正在使用 ASP.NET Core with Identity 3.0
谢谢!!
您使用的是内存中的会话状态吗?
'logins' 的问题是 'lost' 是架构问题,而不是更新网络应用程序的问题。
为会话状态使用 RedisCache 之类的东西。它不仅会在您更新应用程序时持续存在,而且还会处理多个服务器实例上的负载平衡。事实上,除了更新您的应用程序时,当您扩展到多个服务器时,您可能会遇到这个问题。
您现在看到的是天蓝色的限制。虽然 Azure 网站将共享密钥环,但它将交换槽视为单独的应用程序。
有几件事可以尝试。
首先,设置一个通用的应用名称。这将有所帮助,因为默认情况下,共享密钥环的每个应用程序都是隔离的;但如果他们共享应用程序名称,他们就可以共享密钥
public void ConfigureServices(IServiceCollection services)
{
services.AddDataProtection();
services.ConfigureDataProtection(configure =>
{
configure.SetApplicationName("my application");
});
}
如果这对 azure 来说还不够(老实说,我不确定热交换是否最终会使用 Azure Web App 的共享密钥文件夹),您可以将其与使用 Azure 数据表相结合来存储加密密钥 - https://github.com/GrabYourPitchforks/DataProtection.Azure/tree/dev
在这两者之间,它应该获得用于保护在您的应用程序之间共享的身份 cookie 的加密密钥。
我找到了 aspnet core 1.0 的分支,对于那些感兴趣的人:
https://github.com/prajaybasu/DataProtection.Azure/tree/dev/DataProtection.Azure
就像另一个一样,它将加密密钥存储在 azure 存储帐户中。 彻底解决了我的问题。
从 blowdart 的解决方案开始,我解决了我的问题,非常感谢。
安德里亚