繁体   English   中英

c#覆盖文件,IIS 7.5使用的错误文件

[英]c# overwrite file, error file in use by IIS 7.5

我有一个程序可以覆盖我的网站所需的某些文件集,但是我的网站上的访问量却增加了很多,以至于我现在得到了错误文件。 这导致它无法更新文件。

该程序每5分钟运行一次以更新指定的文件。

我让该程序处理文件而不是程序的原因是因为我还需要将其更新到其他Web服务器(通过ftp)。 通过这种方式,我还确保文件每5分钟更新一次,而不是在用户浏览页面时更新。

因此,我的问题是; 我可以告诉IIS7.5在文件更新后(例如5秒钟到1分钟)缓存文件吗? 这应该确保程序下次运行以更新文件时不会遇到任何问题。

最简单的解决方案是更改刷新文件的程序,以将新信息存储在数据库中,而不是文件系统中。

但是,如果您不能使用数据库,我会采取不同的方法,将文件内容与上次修改的时间一起存储到System.Web.Caching.Cache中,然后如果不使用缓存版本,则检查文件是否已更改,以及是否已更改存储同一缓存变量中的新内容和新时间。

当然,您将必须检查是否可以读取文件,然后才能刷新缓存内容;如果无法读取文件,则只需从缓存中获取最新版本。

文件的初始读取必须在application_start中,以确保已初始化缓存,并且在那里您将不得不等到可以读取文件以将其首次存储在缓存中。

检查是否可以从文件读取的最佳方法是捕获异常,因为检查后可能会发生锁定,请参阅此文章: 如何检查文件锁定?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM