ASP.Net在生产环境中无法创建/阴影复制

16

我们最近将一个相当大的ASP.NET网站(Alexa流量排名约1500)更新为在Windows Server 2008 R2上运行的VS2010和.NET 4.0。

自那时以来,当我们部署网站的新版本时,偶尔会发现与此帖子中相同的错误: ASP.Net无法创建/影子拷贝 错误消息是: 当该文件已经存在时,无法创建/影子拷贝'xxxx,Version=4.0.4301.26898,Culture=neutral,PublicKeyToken=null'。

然而,与该帖子不同的是,该错误仅发生在我们的生产环境中,并且仅发生在某些服务器上。

在我们发布代码的新版本之后,我们会重启所有的 AppPools,然后开始出现错误。

似乎进一步的AppPool重启可以解决这个问题,但我真的想知道如何首先避免这个问题?

2个回答

4
我们发现将临时的asp.net文件夹从索引中排除(以及病毒扫描)可以消除我们的阴影复制错误。
以下是针对Windows Server 2003上索引服务的PowerShell示例脚本:
Set-ItemProperty –path HKLM:\SYSTEM\CurrentControlSet\Control\ContentIndex\Catalogs\Web\Scopes -name “C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files” -value ",,4"
Restart-Service cisvc

我们正在使用Windows Server 2008 R2,但没有那个注册表项。谢谢您的建议,我们会看看是否有类似的替代方法。 - Richard
防止我的反病毒软件扫描临时ASP.NET文件似乎对我有用。 - Eric J.

4
我们终于解决了“无法创建/阴影复制”的问题。问题原因是我们的AppPool重启时间与目录复制的时间不同步。它类似于以下步骤:
  1. 将主网站复制到: server\directory
  2. 重启网站的应用程序池
  3. 将小型管理网站复制到server\otherdirectory
问题在于我们的管理网站是主站点的虚拟目录,使用相同的AppPool。这在.NET 2.0下运行良好,但我认为我们可以将故障定位到升级至.NET 4.0时。如果我们改成以下方式,它似乎运行得非常正常:
  1. 将主网站复制到: server\directory
  2. 将小型管理网站复制到server\otherdirectory
  3. 重启网站的应用程序池

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接