1

我試圖從VS發佈我的Web應用程序,而無需停機。如果你在谷歌搜索,你會發現官方文件談到使用插槽,並稍後做一個交換。從VS2015將WebApp部署到Azure,零停機時間

這是一個很好的方法,但當我進行交換時,我有其他問題,登錄失敗(看這個問題:link)。在鏈接

相關信息:

會話沒有連接到認證,你試圖解決它在錯誤的道路。

所有表單身份驗證票據和Cookie都使用數據保護層進行加密和簽名。您遇到的問題是由於加密密鑰未保存,應用程序彼此隔離。

我該怎麼做?在AWS我不得不滾動更新...

欲瞭解更多信息,我使用ASP.NET核心與Identity 3.0

謝謝!

回答

2

你現在看到的是一種天藍色的限制。雖然Azure網站將共享密鑰環,但它將交換插槽視爲單獨的應用程序。

有幾件事情可以嘗試。

首先,設置一個通用的應用程序名稱。這將有所幫助,因爲共享密鑰環的每個應用程序都是默認隔離的;但如果他們共享應用程序的名稱,他們可以共享密鑰

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

如果這還不夠,爲天藍色(我如果熱插拔最終使用Azure的Web應用程序的共享密鑰文件夾誠實不確定),您可以結合起來,與使用Azure的數據用於存儲加密密鑰的表格 - https://github.com/GrabYourPitchforks/DataProtection.Azure/tree/dev

在這兩者之間,它應該獲得加密密鑰,用於保護您的應用程序之間共享的身份Cookie。

+0

我已經測試過設置應用程序的名稱,但沒有結果...,我已經跟微軟西班牙談過我的問題了......我們正在通過Bizspark計劃從AWS遷移到Azure ...感謝您的時間和答覆,我將測試其他選項... – chemitaxis

+1

我已經通過電子郵件發送了一些關於網絡應用程序團隊的人員來查看鑰匙圈是否共享 – blowdart

+0

Hi @blowdart我已經測試過它,並且像魅力一樣工作。再次感謝!! – chemitaxis

-1

您使用的是內存中會話狀態嗎?

「登錄」爲「丟失」的問題是體系結構問題,而不是更新您的Web應用程序的問題。

使用類似RedisCache的會話狀態。當您更新應用程序時,它不僅會持續存在,而且還會處理多個服務器實例上的負載平衡。當您擴展到多臺服務器時,除了更新應用程序之外,您可能還會遇到此問題。

+0

嗨,登錄身份3.0不使用會話...請閱讀我的問題附加鏈接請。謝謝!! – chemitaxis

+1

如果在另一篇文章中有重要的信息,那麼你應該將它包含在你的文章中。我不打算通過「看看這個問題」的說法來瀏覽外部鏈接 –

+0

對不起,LeRoy,我已經添加了使用Identity 3.0的Im ...我將添加更多信息,但這不是會話不存儲的典型問題在數據庫或其他方面,我不會在我的所有應用程序中使用會話。 – chemitaxis