ASP.Net 无法在 PRODUCTION 中创建/卷影副本

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

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

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

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

在我们发布新版本的代码后,我们回收了所有 AppPool,错误开始发生。

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

最佳答案

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

  • 将主网站复制到:服务器\目录
  • 回收网站的应用程序池
  • 将小型管理站点复制到 server\otherdirectory

  • 问题是我们的管理站点是主站点的虚拟目录并使用相同的 AppPool。这在 .NET 2.0 下运行良好,但我认为我们可以确定升级到 .NET 4.0 时的故障。如果我们这样做,似乎运行得很好:
  • 将主网站复制到:服务器\目录
  • 将小型管理站点复制到 server\otherdirectory
  • 回收网站的应用程序池
  • 关于ASP.Net 无法在 PRODUCTION 中创建/卷影副本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7759784/

    相关文章:

    c# - ASP.NET 4.0 网络表单路由

    javascript - RadioButtonList ListItem OnClick 事件?

    c# - AngularJs 和 ASP.NET MVC 5 - ng-model 覆盖 SELECT selected OPTION

    c++ - 是否有可能每次都在随机地址处加载FORTRAN DLL?

    c# - 客户端计算机上的 "Unable to load DLL ' SQLite.Interop.dll' 错误

    asp.net - 如何在 IIS 管理器中为 ASP.NET 4.0 应用程序添加用户?

    javascript - 使用 JavaScript 进行 GridView 计算

    c# - 在 ASP.NET Core 2.0 中将 DataTable 转换为 IEnumerable<T>

    mysql - AutoHotKey 无法从目录加载 libmySQL.dll

    asp.net - 我应该如何在 ASP.NET 4 中执行长时间运行的任务?