【问题标题】:IIS is not refreshing files after I downloaded it once?IIS下载一次后不刷新文件?
【发布时间】:2021-08-22 14:46:18
【问题描述】:

我们有一个 asp.net 网站,其中有一个名为 templates 的文件夹,其中包含 Summaries.xlsxTotals.txt。该网站有一个链接供用户查看这些文件。

在将Summaries.xlsx 下载到我的PC 后(即副本已下载到我的本地下载文件夹),我决定编辑设置网站的原始文件。即使在编辑并保存在IIS 文件夹中之后,我仍在下载旧版本而没有进行任何更改。

另一方面,一旦我编辑了文本文件(显示在浏览器中并且没有“下载”到我的本地 Downloads 文件夹),我就会看到更新。

如果我从服务器上删除这两个文件,也会发生同样的情况:我仍然可以下载 Excel 文件(不存在),但 txt 文件会显示 404 错误。

我知道这是缓存问题,但我不能要求所有用户清除浏览器缓存。

我尝试了这个forums.iis.net 链接中的解决方案,但没有帮助。

我也尝试过回收应用程序池,但没有。

最后,我安装了Application Request Routing Cache,但在“操作”窗格中没有看到Delete All Cached Objects

【问题讨论】:

  • 我们在下载 URL 中附加了一个随机查询字符串。以便每次您单击链接时都将其视为新请求。 var url = "http://whatever.com/Templates/Summaries.xlsx?dt=" + (new Date()).getTime();
  • 谢谢。这可以包含在asp:HyperLinknavigateurl 属性中吗?
  • “我仍然可以下载 Excel 文件(不存在)”。这听起来不对。我不知道怎么做,但我会调查一下,除了chaching。就像删除服务器上的文件你的下载文件夹(或本地任何地方),看看会发生什么。看看你是真的从浏览器获取文件,还是从本地目录获取文件。
  • 即使服务器中不存在 excel 文件,我也可以直接下载它,但前提是我以前下载过它。
  • @fdkgfosfskjdlsjdlkfsf 超链接是否在内容页面内? <asp:Content></asp:Content>

标签: c# asp.net iis iis-10


【解决方案1】:

假设asp:HyperLink 在内容页面中。你可以创建一个javascript函数并在NavigateUrl属性中调用它

<asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent" runat="server">
   
    <script type="text/javascript">
        function DownloadFile(url) {
            document.location.href = url + "?dt=" + (new Date()).getTime();
        }
    </script>


    <asp:HyperLink runat="server" NavigateUrl="javascript:DownloadFile('/Templates/Summaries.xlsx')"> Summaries </asp:HyperLink>

</asp:Content>

【讨论】:

  • 效果很好。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-22
  • 2013-12-25
  • 2015-08-26
  • 2019-09-28
  • 2011-03-11
相关资源
最近更新 更多