我们最近更新了一个相当大的ASP。.NET网站(~1500 alexa流量排名)使用VS2010和。NET 4.0在Windows Server 2008 R2上运行
从那以后,当我们部署新版本的站点时,我们偶尔会在这篇文章中发现同样的错误:ASP。Net无法创建/影子副本错误信息是:当文件已经存在时,无法创建/shadow副本'xxxx, Version=4.0.4301.26898, Culture=neutral, PublicKeyToken=null'然而,不像在那篇文章中,错误只发生在我们的生产环境&
当我们发布了一个新版本的代码后,我们回收了所有的apppool,错误就开始发生了。
进一步的applool回收似乎解决了这个问题,但我真的想知道我们如何才能避免这个问题摆在首位?
我们终于解决了无法创建/影子复制的问题。问题原来是由于我们的AppPool回收的时间。我们的目录有副本。它的工作原理是这样的:
- 复制主网站到:服务器目录
- 网站回收应用程序池
- 将小型管理站点复制到服务器otherdirectory
问题是我们的管理站点是主站点的虚拟目录,并使用相同的appool。这在。net 2.0下工作得很好,但我认为当我们升级到。net 4.0时,我们可以找出失败的地方。如果我们这样做,似乎运行得很好:
- 复制主网站到:服务器目录
- 将小型管理站点复制到服务器otherdirectory
- 网站回收应用程序池
我们发现从索引(和病毒扫描)中排除临时asp.net文件夹消除了我们的影子复制错误。
Windows Server 2003上索引服务的PowerShell脚本示例:
Set-ItemProperty -path
HKLM: SYSTEM CurrentControlSet Web ContentIndex 目录范围控制-name " C:WINDOWS microt.net Frameworkv4.0.30319Temporary ASP. name ". NET Files " -value ",,4"
Restart-Service cisvc