【问题标题】:Why is ASP.NET Core MVC Identity authentication resetting with IIS Cache-Control?为什么使用 IIS Cache-Control 重置 ASP.NET Core MVC 身份验证?
【发布时间】:2019-09-18 16:29:48
【问题描述】:

我正在使用带有 ASP.NET 核心 MVC 的标准身份验证设置。它已经运行了很长时间,但我最近在生产 IIS 服务器上添加了 Cache-Control。该应用程序仅适用于 Intranet,并且会定期更新,因此每次更新应用程序时都需要清除每个人的缓存,这变得很麻烦。

我更改的设置是添加

Cache-Control: max-age=30

到 Http 响应头。

进行此更改后,身份验证将随机“重置”自身。例如,用户将成功登录;然后,他们将导航到受身份验证保护的页面。完成后,用户将被重定向回登录页面。在用户最终能够到达所需的目标页面之前,这可以重复任意次数。

最糟糕的是,我无法以任何可重复的方式复制该问题。我已经多次目睹了它,但它不会发生 10 次中的 9 次,而且我看不出它发生的任何原因。

有谁知道缓存控制如何影响身份验证?

【问题讨论】:

    标签: iis http-headers asp.net-identity cache-control


    【解决方案1】:

    对于缓存问题,您可以使用 iis HTTP 标头保持活动选项。

    您可以按照以下步骤操作:

    1) 打开 IIS 管理器并从连接窗格中选择站点。

    2)双击 HTTP 响应标头

    3)从操作窗格中单击设置公共标题...:

    4) 勾选 Enable HTTP keep-alive 复选框,勾选该复选框以使 Web 内容过期并设置您的时间。

    使用 keep-alive 连接头来保持我们的 HTTP 请求打开的主要原因。这将避免重复关闭和打开新连接的需要。

    您可以使用应用程序池回收,iis 输出缓存设置。

    1)从 IIS 中选择网站。

    2)打开“输出缓存”功能。

    3)从“操作”面板中单击“添加...”。

    4) 指定扩展,勾选“用户模式缓存”和“内核模式缓存”,并在每个部分下选择“阻止所有缓存”选项。

    5)点击确定。

    6) 现在从输出缓存窗口的操作窗格中选择编辑功能设置。

    7) 取消选中启用缓存和启用内核缓存。

    8)重启网站。

    【讨论】:

    • 在尝试了这两个选项后,Chrome 会忽略这两个选项并继续缓存文件。不幸的是,到目前为止,我尝试过的唯一成功使 chrome 正常运行的缓存配置是 Cache-Control max-age 标头
    • 这个常见的HTTP响应头是缓存控制模式属性。您可以参考此article 了解更多详情。您只需要检查 Http keep-alive 它可以帮助您打开连接。 Configure IIS Output CachingHTTP Keep-Alive
    • @dan 客户端和服务器之间有代理服务器吗?
    猜你喜欢
    • 1970-01-01
    • 2021-08-23
    • 2015-02-03
    • 1970-01-01
    • 2018-08-15
    • 1970-01-01
    • 2019-10-08
    • 2019-06-30
    • 1970-01-01
    相关资源
    最近更新 更多