首页 > 解决方案 > 如何检查 SSO 导致缓存相关问题的原因?

问题描述

当我使用 SSO 登录时,更改页面上的某些内容,提交请求,更改不会在第一次尝试时应用。如果我重做它,它会起作用。

如果我使用 SSO 登录,我会在站点 B 上键入我的凭据并在站点 A 上登录。此更改仅在第一次尝试时才应用于站点 A。

如果我从站点 A 注销,再次使用 SSO 登录(不需要重新输入我的凭据,因为我已经在站点 B 上登录),一切正常。

我还以为是缓存问题。我试过像这样禁用缓存:

在 aspx.cs 中添加了这个

 [OutputCache(NoStore = true, Duration = 0, VaryByParam = "None")]

在 aspx 中:

<%@ OutputCache NoStore="True" Duration="1" VaryByParam='*' Location="None" %> 

在 .js 文件中:

 $.ajax({
        cache: false
        //rest of ajax that gets data from back-end
    });

我添加了一些日志记录,出现问题时是因为从前到后给出的数据不正确。这是它的外观:

    <asp:HiddenField ID="HdnSelectedMenuIds" runat="server" />

在按钮保存时,我在 aspx 中有这个:

  <asp:Button ID="btnSave" runat="server" Text="Save" CssClass="inputButton"
                OnClientClick="javascript:return GetNodeValue();" OnClick="btnSave_Click" />

js文件中有对应的函数。

function GetNodeValue() {
    var checkedMenuIds = [];
    var treeView = $("#treeviewTab").data("kendoTreeView");
    var extTreeView = $("#treeviewExternal").data("kendoTreeView");
    GetNodeId(treeView.dataSource.view(), checkedMenuIds);
    GetNodeId(extTreeView.dataSource.view(), checkedMenuIds);
    $(myControls.HdnSelectedMenuIds).val(checkedMenuIds);
}

当出现问题时,HdnSelectedMenuIds 的值错误。

我不知道会发生什么。我应该尝试什么?

标签: c#asp.net.netwebformssingle-sign-on

解决方案


推荐阅读