如何在 ASP .NET MVC 中使用 Azure AD 凭据长时间不活动后处理 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 分钟,点击一些 link 我得到了普通的服务器运行时错误,无法刷新页面并再次登录。只有清除 cookie 有效。

我尝试了什么:

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("~/"); } }

如此处所述:Federated Authentication on Azure

我终于做了一个解决方法:我没有处理这个讨厌的异常,而是让会话与 javascript 调用控制器并设置一些 Session["Value"]

的预定请求保持同步

我还通过确保我的页面每 30 分钟刷新一次来解决这个问题。

这可以在 HTML 中通过添加元标记来完成

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

也可以通过Javascript

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