【发布时间】:2012-07-21 06:25:12
【问题描述】:
我每 10 分钟将一个 200k JSON 文件从控制台应用程序写入 IIS 框的 Web 文件夹。移动客户端会定期通过 IIS 从该文件中获取数据。
想知道如果 IIS 在写入文件时命中文件会发生什么。 This 问题说 File.WriteAllText 使用 FileShare.Read - 所以有人可以在写入时阅读它。
我将用一个大文件对此进行测试,看看 IIS 在写入过程中如何处理请求。我记得 UNIX 中的一个技巧是写入版本文件 json.201207231033 并将符号链接更新为 json。
其他人有这方面的经验吗?
【问题讨论】:
-
答案是,如果你真的想避免任何问题,你应该在写入文件时锁定文件。 stackoverflow.com/a/6805806/101827
-
如果 IIS 遇到一个被锁定的文件,它会做什么?服务下降一些 400 错误?那并不理想
-
我们谈论的是两种不同类型的锁定。我说的是mutual-exclusionlock,您可以在写入时使用它来临时阻止检索,这不会对您的客户造成错误。如果他们直接检索它,您可能需要在您的客户端和文件之间实现一个层。
-
我可以看到混乱在哪里。我正在从控制台应用程序编写 json 文件。更新了我的问题。
-
老实说,这是在网络上发布数据的一种非常奇怪的方式。大多数 Web 应用程序根据请求在 Web 服务器上执行代码,然后执行并检索新数据。为什么要这样设计?
标签: c# iis concurrency