簡體   English   中英

在具有Azure AD憑據的ASP .NET MVC中長時間不活動后,如何處理CryptographicException?

[英]How to handle CryptographicException after long inactivity in ASP .NET MVC with Azure AD credentials?

我正在使用包含用戶數據和憑據的Azure Active Directory應用程序。 我使用Microsoft.Azure.ActiveDirectory.GraphClient庫使用此憑據訪問ASP .NET MVC 5應用程序。 長時間不活動后,大約20分鍾,然后單擊一些鏈接,我收到了“服務器運行時錯誤”,無法刷新頁面並再次登錄。 僅清除cookie有效。

我試過的

  • 使用customErrors處理此錯誤-似乎不起作用
  • 抓住它:

protected void Application_Error(object sender, EventArgs e) { var error = Server.GetLastError(); var cryptoEx = error as CryptographicException; if (cryptoEx != null) { FederatedAuthentication.WSFederationAuthenticationModule.SignOut(); Server.ClearError(); HttpContext.Current.Response.Redirect("~/"); } }

如此處所述: Azure上的聯合身份驗證

  • 僅在生產環境中使用調試器和本地計算機時不存在問題-它取決於IIS配置嗎?
  • 我可以更改Azure AD cookie的sessionTimeout使其每次都不等待20分鍾嗎?
  • 我應該使用“靜態”機器密鑰-不是每次由AD生成的嗎?

我終於做了一個解決方法:我沒有處理這個令人討厭的異常,而是只是通過JavaScript調度的請求來保持會話,這些請求正在調用控制器並設置了一些Session["Value"]

我還通過確保頁面每30分鍾刷新一次來處理此問題。

可以通過添加meta標簽在HTML中完成

<meta http-equiv="refresh" content="1800">

也可以通過Javascript完成

setInterval(function() {
              window.location.reload();
            }, 180000); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM