2016-02-12 46 views
8

我遇到了MVC6項目中「記住我」樣式複選框的問題。我有一個related question here解決了在我的本地主機上進行調試的問題,但是在將項目部署到我們的開發環境之後,它仍然迫使我在20分鐘後重新登錄。ASP.Net 5身份持久性身份驗證不工作IIS 7.5空閒計時器

20分鐘的時間跨度讓我覺得有些東西被IIS配置錯誤。我將我的應用程序池(配置爲「無託管代碼」)空閒計時器在1分鐘後閒置。果然,1分鐘後,我不得不重新登錄。

這使我相信,在應用程序池回收後,我的持久認證Cookie不再被視爲有效(即使我的Cookie配置爲不過期10天,SecurityStampValidationInterval設置爲10天1分鐘。

我已經看到了相關的web.config中的計算機密鑰早期版本的.NET的類似的東西,但MVC6沒有在web.config一個system.web節我把計算機密鑰。

我的.NET5項目DNX是針對完整的.NET框架,而不是.NET Core。

回答

6

你是如何配置數據保護的?使用IIS和DNX,我們不知道以何種方式持久存儲密鑰,除非您加載配置文件,這不是默認配置文件。因此,一旦您的應用程序終止所有用於簽名身份驗證cookie的密鑰就會被拋棄。這在IIS Express中不會發生,因爲IIS Express會加載配置文件。

這裏有幾個選項。您可以在IIS服務器上運行provisioning script以創建ASP.NET可以使用的一些註冊表項,或者您可以使用configure data protection to use the file system這是您如果要運行多個主機時要執行的操作。

+0

我明白了。我正在研究數據保護,但是我無法從配置中找出需要將其配置爲使用文件系統或註冊表來使用持久密鑰的方法。謝謝您的幫助!我知道.net 5還是比較新的,所以我們都在學習:) – mituw16

+0

如果您對我們如何在文檔或模板中更好地表達這一點有所建議,請讓我知道。 – blowdart

+0

文檔太棒了!我被絆了一下,因爲我沒有使2 + 2 = 4連接,我需要堅持到文件系統(或註冊表),以便讓Identity擁有持久的密鑰。實際上,答案就在那裏,我只是沒有看到它。我一直在這個問題上工作了很久,我錯過了簡單的回答:) – mituw16

1

編輯

見@ blowdart的答案更好的解決方案。


的人誰遇到同樣的問題,我有,「修復」,我實現了這是在IIS中的空閒計時器設置爲0,這意味着永遠不會超時。

我仍在尋找嘗試找出真正的解決方案,因爲一些主機環境可能不允許空閒計時器設置爲0(通常共享主機等)。