【问题标题】:Disable Client-side caching in .NET Core console app?在 .NET Core 控制台应用程序中禁用客户端缓存?
【发布时间】:2018-07-03 13:16:41
【问题描述】:

我正在尝试运行一些 Azure 批处理作业,当我从 Azure 服务收到 403 Forbidden 时,我将运行到最后。谷歌搜索后,我发现this article 这意味着该问题与客户端的凭据缓存有关,并通过修改配置文件提供了解决方案,如下所示:

<system.net>
    <requestCaching defaultPolicyLevel="NoCacheNoStore"/>

问题是,这是一个 .NET Core 控制台应用程序,不存在这样的配置文件。

与上述 .NET Framework 4.x 解决方案相比,如何禁用 .NET Core 控制台项目的请求缓存?

【问题讨论】:

  • .NET Core 默认使用 Windows 上的 WinHTTP HTTP 堆栈实现。而且 WinHTTP 没有 HTTP 缓存机制。请参阅 .NET Core Github 上的 How do I utilize HTTP caching with WinHttpHandler and HttpClient? 问题。可能您需要调试您的应用程序以找出导致问题的请求以及原因。您可以使用像Fiddler 这样的调试代理。为了绕过中间代理缓存,您可以尝试将Cache-Control: no-cache, no-store, max-age=0 HTTP 标头添加到请求中。

标签: c# console .net-core browser-cache


【解决方案1】:

正如@Leonid 提到的,默认情况下,.NET Core 组件没有 Http Cache,所以这里不需要做任何事情。

事实证明,我遇到的问题是 .NET Core 2.1 的 Azure Batch 开发团队的一个已知错误,他们希望尽快修复。

【讨论】:

  • 在 .NET Core 3.0 中有类似问题;你知道这个问题是否已经解决了吗?
  • 更新到 3.1,以防万一,但也有同样的问题。
  • 我相信我只是将项目保持在 2.0 并且它有效,从那时起就没有访问过它......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-27
  • 2019-12-29
  • 2023-03-20
  • 1970-01-01
相关资源
最近更新 更多