【发布时间】:2010-10-13 20:15:45
【问题描述】:
我有一个持续的情况,当我尝试通过 FTP 上传文件时,我收到一个错误,即 DLL 被锁定并且当前无法被覆盖。这只是发生这种情况的 DLL,普通文件(aspx、ascx、css 等)可以正常覆盖。
我们的设置
我们有 2 个网络服务器,它们通过 DFS 保持同步,由单独的服务器管理。
它们都属于同一个域。
他们都在专用网络上的 1GB 以太网卡上进行内部传输。
我们的问题
我们在 VS2010 中开发并构建我们正在处理的站点,当它达到需要在服务器上检查它的级别时,我们是否可以覆盖 BIN 文件夹中的 DLL。当我们从旧的、不可靠的同步工具迁移到超级 Windows 2008 DFS 工具时,我才开始遇到这个问题。它是一个很好的工具并且运行良好,但这是我认为导致此问题的唯一原因。
要真正覆盖该文件,我需要删除所有使用此基本代码的站点,然后释放对 DLL 的锁定,然后我可以上传它。
我今天绝望地来到这里,我厌倦了不得不每隔一段时间就关闭网站,以便上传 DLL。
据我了解,ASP.Net 将 DLL 缓存到一个临时文件夹中,所以天知道为什么锁仍然在 BIN 文件夹中的 DLL 本身上。
奇怪的是,这并不总是发生,它可能会持续数周而不做。或者像最近一样,每天我都必须关闭 IIS 站点以便上传。
在撰写本文时,即使我已关闭网站,我也无法上传到 FTP。
任何人都可以对此有所了解,这样我就可以继续我的工作,而不是每十分钟搞砸一次。 VS2010 如此不稳定且视觉源安全仅检查它想要的内容而这也不是问题,这已经够糟糕了!
【问题讨论】:
-
你应该把 Process Explorer 放到服务器上,当所有东西都像鼓一样锁紧时,检查谁拥有这些 dll 的句柄。
-
我可以看到它的 IIS。我知道什么有锁,但我就是不明白它为什么有锁?就像它出于某种未知原因保持打开状态一样。至少我试图找出一个原因。不过我肯定会再做一次,并确保它是 IIS。
-
你找到解决办法了吗?
-
嗨@Arturito,不,我没有解决方案。我们通过在上传时将服务器上的 web.config 名称更改为 web2.config 来解决这个问题。这会释放 DLL 上的锁。我还没有弄清楚为什么只有某些项目锁定而其他项目没有。我在 DLL 中有另一个类似大小的项目(每个 DLL 大约 2mb),它没有锁定,我从来没有问题。它刚刚成为我们现在在这里生活的东西之一。
标签: asp.net dll windows-server-2008 microsoft-distributed-file-system