2

我的 IIS 服务器中存储了一个 XML 文件。在执行的几个阶段,我的应用程序检索此文件。基本上它会回到服务器并再次获取文件。问题是应用程序出错,因为该文件已被浏览器缓存,因此未返回。它返回 304 错误。我知道当我在 URL 上传递一个不断变化的 ID 时,它不会被缓存;问题是这个文件有一个固定的位置,如果我在 URL 中放了其他东西,它就找不到它。那么,有没有办法优雅地解决这个问题?更改客户端上的缓存设置不是一种选择。我使用 WebClient 对象异步请求文件。谢谢!

4

3 回答 3

1

304 不是错误,它是根据 HTTP 响应代码规范的“未修改”指示。您可以尝试向查询字符串添加一个或两个随机数,以便尝试返回 200。

于 2013-06-19T20:49:53.033 回答
0

尝试在请求中设置 If-Modified-Since 标头以执行有条件的 GET 请求。然后,您可以检查未修改(HTTP 304)状态代码,如果已修改,则执行某些操作;否则让浏览器使用缓存的版本。

这是有关此技术的博客条目: 在代码中设置 If-Modified-Since Header

于 2013-06-19T20:56:23.933 回答
-1

当您第一次下载 XML 文件时,IIS 的设置告诉客户端可以缓存该文件。您可以修改包含 XML 文件的目录的缓存设置,以便告诉客户端不要缓存任何内容。

例子:

<configuration>
  <location path="myXmlFiles">
    <system.webServer>
      <staticContent>
        <clientCache cacheControlMode="DisableCache" />
      </staticContent>
     </system.webServer>
  </location>
</configuration>
于 2013-06-19T20:55:29.943 回答