0

在使用 IIS 作为 Web 服务器的 Windows 10 上,似乎使用 mklink 命令在 wwwroot 下创建的目录有时会停止看到对该目录中的文件所做的更改。以下是我为测试这一点所做的:

我创建了一个目录C:\test,然后使用以下 DOS 命令在C:\inetpub\wwwroot上创建了指向该目录的符号链接:

mklink /D C:\inetpub\wwwroot\test C:\test

然后,在C:\test目录中,我创建了一个名为test.html的小 HTML 文件,其内容如下:

<html>
<body>
This is test 1
</body>
</table>

然后,在同一台计算机上,我打开 Microsoft Edge 并转到以下页面:

http://localhost/test/test.html

它工作并显示This is a test 1正如预期的那样。然后我修改记事本中的文件以显示This is test 2。它再次起作用。但是,经过几次迭代,在我的情况下,直到This is test 5,浏览器停止显示更新的文件。它只是显示This is test 4。我可以更改文件以显示数字 6、7、8 等,但浏览器停留在This is test 4

起初我认为这是一个缓存问题,但我在 IIS 中关闭了缓存,问题仍然存在。我什至在禁用缓存后重新启动,它再次开始工作几次迭代,然后再次停止更新。

如果您在C:\inetpub\wwwroot下创建目录test ,那么test不是符号链接并完成上述练习,那么它可以完美地工作,就像它应该做的那样。

为了解决这个问题,我使用以下命令创建了一个批处理文件makelink.bat :

rmdir C:\inetpub\wwwroot\test
mklink /D C:\inetpub\wwwroot\test C:\test
timeout 300
makelink

这会强制每五分钟重新创建一次符号链接,这会导致正确的信息再次出现在浏览器中进行多次迭代。显然,这不是一个理想的解决方案。

这是 Windows 10 中的错误还是我做错了什么?

4

1 回答 1

0

您可以尝试在注册表中禁用 IIS 缓存,然后重新启动并重试。

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\InetInfo\Parameters\DisableMemoryCache (REG_DWORD)

当此注册表项设置为非零值时,文件缓存被禁用,您可以将其设置为 1。

于 2022-01-24T02:35:34.177 回答