【问题标题】:ASP.Net cannot create/shadow copyASP.Net 无法创建/卷影复制
【发布时间】:2010-11-03 16:18:48
【问题描述】:

我在开发 ASP.Net 应用程序时反复收到此错误:

  Cannot create/shadow copy 'XXXXX' when that file already exists

其中 XXXXX 是一个随机 DLL。通常,DLL 是 Microsoft 企业库中的 DLL 之一,但它会有所不同。

这真的很随机​​,而且非常令人沮丧。我会花几个小时没有得到错误,然后每 10-20 分钟得到这个错误。

我见过几种解决方案。例如,this question。我尝试过使用 Clean Solution 选项,并且我也只是重新启动了本地 IIS。但是,它仍然以相同的随机但持续的频率发生。

我也看到很多人提到在配置文件中使用这个选项:

<hostingEnvironment shadowCopyBinAssemblies="false" />

但是,其他人提到它有问题,绝对不应该在生产中使用它。

那么,我应该放弃并尝试使用 shadowCopyBinAssemblies 选项吗? (并确保不要将此更改复制到其他环境。)我是唯一经常遇到此问题的人吗?

注意:我使用的是 Visual Studio 2008。

【问题讨论】:

  • 我反复收到此错误,我很惊讶微软仍未解决此问题。
  • 我们现在正在积极努力。鉴于它真的很难重现,这使得解决问题变得更加困难。
  • 我已经重新提交了连接错误,以便 MS 客户可以跟踪它。 connect.microsoft.com/VisualStudio/feedback/details/786247/…
  • @RickAndMSFT - “真的很难复制”?它一直在发生(尤其是在使用 IIS Express 时),看看这篇文章的浏览量。

标签: asp.net assemblies web-config


【解决方案1】:

等待 10-30 秒,然后点击刷新。出于某种原因,这总是对我有用。

【讨论】:

  • 它起作用了,因为这个问题的主要原因是试图在 VS 中完成构建过程之前访问网页。
  • 这很有趣,扎法尔。你有这方面的更多信息吗?这个错误有时让我发疯!
  • 我唯一知道的是 - 当您在依赖 DLL 文件完成构建之前尝试访问网页时会收到此错误。嗯,这不是我认为错误的唯一情况,但这个是最受欢迎的。
【解决方案2】:

以下变通方法来自this now defunct connect issue

  • &lt;hostingEnvironment shadowCopyBinAssemblies="false" /&gt; 添加到 web.config 文件的 &lt;system.web&gt; 部分。
  • 遇到问题时重新启动 Cassini
  • 如果出现错误,请停止调试器,右键单击解决方案并“清理解决方案”。按 F5 重新启动调试器。这真的很烦人,因为它的失败率 >50% 对我来说,您会认为不应该有手动选项来清洁解决方案!这个 1200 美元的 POS 应用程序应该会自动为您清洁它!李>
  • 这是另一种可能对某些人更有吸引力的解决方法,由 Gary Farr (http://blogs.claritycon.com/blogs/gary_farr/archive/2007/03/09/2888.aspx) 提供。
  • 将以下内容添加到您的预构建事件中:

    IF EXIST $(TargetPath).LOCKED (del $(TargetPath).LOCKED) ELSE (IF EXIST $(TargetPath) (move $(TargetPath) $(TargetPath).LOCKED))

  • 为我完成这项工作的解决方法是使用“构建解决方案”而不是使用“构建”

  • 构建成功后,我数到十,然后刷新我的网络表单。
  • 我发现,通过针对 IIS 重新注册 ASP.NET,问题“消失了” - 从那以后我就再也没有遇到过这个问题。您需要在命令行上运行以下命令:
    C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -i。这很可能不适用于所有人 - 这是一个复杂的问题。
  • 重启VS。
  • 在清理解决方案时,发出了一些关于无法删除文件的警告。这些文件具有它们的只读属性集。将这些文件的属性设置为读/写后,问题就解决了。
  • 重启 IIS

编辑:an old version of the page 检索到的项目(由archive.org 提供)。

【讨论】:

  • 感谢您的链接,但需要进行一些筛选。对我有用的是“在成功构建后,我数到十,然后我刷新我的网络表单。” (虽然我只数到了 2)
  • 对该链接的最佳修复是“重启 IIS”。我正在运行本地 IIS 而不是 Cassini 作为我的开发 Web 服务器。干杯。附言我用的是VS2010,所以还没修复。
【解决方案3】:

只需重新启动 Visual Studio,这对我有用。

【讨论】:

    【解决方案4】:

    打开您的项目属性,打开 Web 选项卡并确保未选中 Enable Edit and Continue 选项。

    【讨论】:

      【解决方案5】:

      在我的情况下,只有 iisreset 有效。

      【讨论】:

        【解决方案6】:

        我遇到了同样的问题,将此代码放在 部分的 web.config 中对我来说效果很好。

        <hostingEnvironment shadowCopyBinAssemblies="false" />
        

        【讨论】:

          【解决方案7】:

          在使用我们创建的导入 DLL 时,我经常遇到这个问题。

          尝试停止正在发生失败,甚至引入了不同的问题,但无论何时发生,我都会执行重建解决方案,并且该构建的问题会立即消失。

          另外,自从使用 Visual Studio 2002 以来,我还没有看到过这个问题。据我所知,2008 没有这个问题,2005 也没有。你使用的是较旧的 VS 吗?

          【讨论】:

          • 好的,那就跟版本无关了。如果您执行重建解决方案,您的应用程序会运行吗?
          • 是的,我“清理”了解决方案,重建并工作了 10-20 分钟。然后我再次收到错误并重复。
          • 我在使用 DotNetNuke 时遇到了同样的问题。它在修复了错误的 PortalAlias 后神奇地消失了。奇怪的事情发生了。作为托管环境设置的替代方法:将其添加到 Pre-Build 事件命令行: IF EXIST $(TargetPath).LOCKED (del $(TargetPath).LOCKED) ELSE (IF EXIST $(TargetPath) (move $(TargetPath) $(TargetPath).LOCKED))
          【解决方案8】:

          进入设计模式,然后右键单击并在浏览器中点击视图,问题就会消失 阿尼尔·马丹

          【讨论】:

          • 这和去抽根烟完全一样,问题就会消失
          【解决方案9】:

          在预构建事件命令行中添加这些行,这基本上可以解锁 Visual Studio 中的 DLL:

           IF EXIST $(TargetPath).LOCKED  (del $(TargetPath).LOCKED)
            ELSE (IF EXIST $(TargetPath) (move $(TargetPath) $(TargetPath).LOCKED))
          

          重新编译不会出现无法复制DLL的错误。

          【讨论】:

            【解决方案10】:

            如果您使用实体框架:

            错误信息: “当该文件已存在时,无法创建/影子副本。”

            解决方案: “请稍等几秒钟,然后刷新页面。”

            欲了解更多信息,请访问:Advanced Entity Framework 6 Scenarios for an MVC 5 Web Application (12 of 12)

            【讨论】:

              【解决方案11】:

              您只需刷新 (F5) 页面即可。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 2021-09-29
                • 1970-01-01
                • 1970-01-01
                • 2011-04-27
                • 2017-08-04
                • 2011-03-18
                • 2020-04-30
                相关资源
                最近更新 更多