我使用 mklink 实用程序创建了指向 Web 内容目录的符号链接。如果不发出 iisreset,IIS7 不会“看到”此链接目录中任何经典 ASP 文件的更改。我已禁用缓存,文件更改会在其他静态文件(如 .html)上被拾取,但 .asp 文件会被忽略。
答案1
这就是您正在寻找的答案。
https://stackoverflow.com/questions/6698481/caching-problem-with-symlinks-on-iis-7-5
IIS 不知道 Visual Studio 何时修改了符号链接上的文件。但您可以告诉 IIS 不要在内存中缓存本地文件。仅在开发环境中使用……在生产中,如果您使用符号链接,则应在更新后回收池。
答案2
这要么是已知的,要么是设计使然(选择委婉的说法“它不像你想象的那样工作”)。在 iis7 下,你应该使用虚拟目录指向相同的物理文件夹来实现你想要的效果。
答案3
这个答案的问题是,如果您使用虚拟目录指向内容的物理位置,那么该内容就位于目录级别。
假设您是一名优秀的开发人员,并且使用版本控制。假设您已经设置了一个集成的客户端/服务器环境,其中服务器上使用 VSS,而开发人员在客户端上使用 Visual Studio。因此,开发人员从 VSS 签出一个 asp 文件,进行更改并希望在客户端上对其进行测试,然后再将其签回服务器上进行集成测试。您不想让开发人员将文件复制到 wwwroot,因此您有一个映射到 VS Websites 目录的虚拟目录。主要问题是由于 web.config 控制数据库和报告管理器以及网站使用的所有其他 MS 垃圾。VSS 中的 web.config 正确指向服务器集成测试环境,在该环境中,所有开发人员的更改都在其客户端上完成单元测试后进行测试。好吧,iis 没有 web.config 的搜索路径,该路径可以覆盖已签出到 VS 的 VSS 项目的一部分的 web.config。这是使用符号链接的地方。 wwwroot 应用程序目录将包含指向客户端开发环境的 web.config 的本地副本,并具有通过 VS 在 VSS 控制下的文件的符号链接。
这在 Linux 和任何其他版本的 Unix 中都非常简单,因为符号链接已经存在了很久,因为我描述的场景和其他类似的场景非常常见。