IIS 6/7是否在服务时锁定图像文件?

Cra*_*vis 3 .net iis

我正在编写一段.NET代码,需要覆盖IIS 6或7上托管的网站中的图像文件.应该触摸图像的唯一进程是IIS和我的覆盖图像的进程.

我想知道IIS是否会锁定文件,导致我的覆盖代码抛出异常.

Ste*_*ung 5

简短的回答是尝试打开文件,如果失败,等待几秒钟再试一次,循环直到成功或超时.

但是,如果你要更新这些图像,那么你真的在这里击败了IIS的缓存机制.Web服务器提供不断变化的文件并不健康.Web服务器非常适合提供静态文件.

现在,如果您的图像是如此动态,也许您需要通过服务器端程序来提供它.生成您的图像(或通过远程处理或WCF从其他程序读取)并提供服务.您的服务器端程序也可以执行某种形式的缓存.如果只持续很短的时间,甚至不需要保留图像文件.

如果您只需要偶尔替换这些图像,那么可以继续重试.

现在,如果这些图像真的很重要,并且你真的希望IIS在你有新版本时立即停止提供旧版本(你服务的是CAPTCHA吗?),并且IIS每秒多次服务同一个文件,然后你的进程可能无法找到插槽.然后你要么找到一种方法告诉IIS停止并等待新版本 - 重新启动它应该工作,因为你不经常更改图像(否则,你已经走了动态路线).