Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 如何防止IIS 7.5缓存符号链接内容?_Windows_Iis_Caching_Iis 7.5_Symlink - Fatal编程技术网

Windows 如何防止IIS 7.5缓存符号链接内容?

Windows 如何防止IIS 7.5缓存符号链接内容?,windows,iis,caching,iis-7.5,symlink,Windows,Iis,Caching,Iis 7.5,Symlink,我已经将IIS 7.5设置为静态服务于一些文件,其中一些文件实际上是符号链接(由mklink创建) 即使我同时禁用了内核和用户缓存,这些文件似乎也被IIS缓存了。文件修改后,IIS仍在为旧版本提供服务 为了确保这不是由ASP.NET引起的,我创建了一个专用的非托管AppPool。我还检查了浏览器是否缓存了这些文件 My web.config如下所示: 有几个人提到这个问题: 有没有解决这个问题的提示?这个问题让我有一个月的时间发疯了。您必须在注册表中禁用IIS缓存,据我所知,这在任何

我已经将IIS 7.5设置为静态服务于一些文件,其中一些文件实际上是符号链接(由
mklink
创建)

即使我同时禁用了内核和用户缓存,这些文件似乎也被IIS缓存了。文件修改后,IIS仍在为旧版本提供服务

为了确保这不是由ASP.NET引起的,我创建了一个专用的非托管AppPool。我还检查了浏览器是否缓存了这些文件

My web.config如下所示:


有几个人提到这个问题:


有没有解决这个问题的提示?

这个问题让我有一个月的时间发疯了。您必须在注册表中禁用IIS缓存,据我所知,这在任何地方都没有针对IIS 7的文档记录,而是一个旧的IIS 5技巧,仍然有效。您可以将下面的文件转换为.reg文件并导入,也可以导航到该部分并手动添加。我建议在更改此参数后重新启动,我不确定IIS是否在只设置了一个IIS后就选择了它

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\InetInfo\Parameters]
"DisableMemoryCache"=dword:1

我以前能够用修复IIS7上的此问题。从那以后,我用IIS 10迁移到Windows 10,并且再次遇到同样的问题<代码>禁用内存缓存没有帮助

然后我禁用了内核缓存,现在,这似乎解决了这个问题(我为屏幕截图中的荷兰人感到抱歉):


巴宁的解决方案对我很有效。更改注册表参数并重置IIS后,问题已得到解决。下面的C#程序(您可以使用LINQPad运行它)将帮助您重现问题:

使用System.IO;
Net系统;
void Main()
{
var virtualPath=“JunctionPoint/sample.js”;
var physicalPath=$@“C:\IISROOT\JunctionPoint\{virtualPath}”;
对于(int i=0;i<100;i++){
File.writealText(physicalPath,i.ToString());
控制台。写入(i+“=”);
var client=new WebClient();
字符串html=客户端。下载字符串($”http://localhost/{virtualPath}”);
Console.WriteLine(html);
if(i.ToString()!=html){
Console.WriteLine(“问题!!!”);
}
}
}

回收应用程序池应该更新这些文件,但这本身不是一个解决方案。(是的,回收应用程序池会丢弃缓存。)是否可以为每个网站设置它?很遗憾,否。注册表值会全局关闭缓存。+1确定,感谢您的提示。但我不能使用它——因为我只需要一个站点:(有人在IIS8.5上尝试过这个吗?我的缓存问题特别是任何非静态文件(web.config、.aspx等…)为了使更改显示出来,我必须重新启动完整的应用程序池。这解决了我在IIS7上的问题。我已经用IIS 10迁移到Windows 10,应用了修复程序,但我在静态资源上又得到了一个陈旧的缓存:(请注意,OP已经禁用了内核缓存(
enableKernelCache=“false”
)。很遗憾,此解决方案在IIS 10上不适用。相同的结果。