【问题标题】:ASP.Net cannot create/shadow copy in PRODUCTIONASP.Net 无法在 PRODUCTION 中创建/卷影复制
【发布时间】:2011-10-13 20:03:27
【问题描述】:

我们最近更新了一个相当大的 ASP.NET 网站(约 1500 次 alexa 流量排名)以使用在 Windows Server 2008 R2 上运行的 VS2010 和 .NET 4.0

从那时起,当我们部署新版本的网站时,我们偶尔会在这篇文章中注意到同样的错误: ASP.Net cannot create/shadow copy 错误信息是: 当该文件已存在时,无法创建/卷影复制 'xxxx, Version=4.0.4301.26898, Culture=neutral, PublicKeyToken=null'

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

在我们发布新版本的代码后,我们会回收所有 AppPools 并开始出现错误。

进一步的 AppPool 回收似乎解决了这个问题,但是我真的很想知道我们如何首先避免这个问题?

【问题讨论】:

    标签: asp.net dll asp.net-4.0 windows-server-2008-r2 shadow-copy


    【解决方案1】:

    我们终于解决了“无法创建/卷影复制”问题。问题原来是由于我们的 AppPool 回收和我们的目录副本的时间。它的工作原理是这样的:

    1. 将主网站复制到:服务器\目录
    2. 为网站回收应用程序池
    3. 将小型管理站点复制到服务器\其他目录

    问题在于我们的管理站点是主站点的虚拟目录,并且使用了相同的 AppPool。这在 .NET 2.0 下运行良好,但我认为我们可以确定升级到 .NET 4.0 时的故障。如果我们这样做,似乎运行得很好:

    1. 将主网站复制到:服务器\目录
    2. 将小型管理站点复制到服务器\其他目录
    3. 为网站回收应用程序池

    【讨论】:

      【解决方案2】:

      我们发现从索引(和病毒扫描)中排除临时 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"

      重启-服务cisvc

      【讨论】:

      • 我们使用的是 Windows Server 2008 R2,但没有该注册表项。不过感谢您的建议,我们会看看是否可以做类似的事情
      • 阻止我的防病毒软件扫描 ASP.NET 临时文件似乎对我有用。
      猜你喜欢
      • 2010-11-03
      • 1970-01-01
      • 2021-09-29
      • 1970-01-01
      • 1970-01-01
      • 2011-04-27
      • 1970-01-01
      • 2020-04-30
      • 2017-08-04
      相关资源
      最近更新 更多