7

我正在将许多 .Net 项目部署到不同的服务器。为此,我的团队使用 TFS 进行构建,然后从构建模板调用 ps1 脚本,该脚本使用 msdeploy 推送到所有不同的服务器。这一切都非常有进取心,不,我现在不能自由切换到不同的东西。这个过程已经工作了几个月,没有任何问题。

今天,部署连续失败了几次,出现了一些不同的错误。仅此一项就让我感到困惑(并且可能不相关),但现在我一直得到的是:

在远程计算机上处​​理请求时发生错误。'C:\Builds\SomeDirectory\obj\Debug\Package\PackageTmp\AReferencedProject.dll' 的流数据尚不可用。

当我的脚本运行 msdeploy 时发生此错误。dll 由 Windows 服务使用,但服务已停止(据我所知 - 服务停止不会引发任何错误)并且 dll 不是“只读”的。dll 存在于正在构建/部署的机器上以及正在部署到的机器上。

我发现如果我从要部署到的服务器中删除“不可用”的 dll,我可以避免此错误,但问题会在每次后续部署时再次出现,除非我在每次部署之前手动删除此 dll。

我已经看到了这个问题,但我没有推送到 Azure,只是推送到 Windows Server 2008。有谁知道为什么 Microsoft web deploy (msdeploy) 会抛出这个错误?

4

3 回答 3

8

我有同样的问题。尝试部署几次,但出现相同的错误。

回收服务器上的应用程序池解决了这个问题,这样我就可以再次运行正常的部署了。

于 2013-05-20T14:54:46.353 回答
3

我们一直在使用 SQLite.Interop.dll(ELMAH 在我们的 Web 应用程序中使用)遇到这个问题。据我所知,这个问题与我们的 Web 应用程序正在使用 DLL SQLite.Interop.dll 的事实有关ELMAH,由于某种原因,这个 DLL 没有被影子复制。我们使用的解决方案是这里推荐的在每次部署时回收应用程序池。我们的命令是这样的:

"C:\Program Files\IIS\Microsoft Web Deploy V3\msdeploy.exe" -verb:sync -source:recycleApp -dest:recycleApp="Default Web Site/ourApp",computerName="DeployComputer"

这允许随后同步我们的部署包的 msdeploy 成功。有人回复该论坛还建议使用“-enableRule:AppOffline”,我们不需要尝试。

于 2013-11-13T17:34:13.063 回答
0

我今天遇到了和你完全相同的问题,遇到了你没有答案的问题,开始把我的头发拉出来……关于这个问题的文章或建议太少了,我几乎放弃了!

但是,我已经能够为我解决这个问题,所以我发布我的解决方案来帮助你自己和其他任何遭受这个问题的人。

无论出于何种原因,我在 IIS 中的 Site & AppPool 似乎有点混乱,并开始抛出上述问题中描述的错误。为了解决这个问题,我删除了原始站点(停止了站点和 AppPool),使用相同的设置创建了一个全新的站点和 AppPool,使用 WebDeploy 发布到它,现在它似乎又可以正常运行了。

这可能对其他人不起作用,但它有望为人们提供其他尝试。

于 2013-05-08T15:00:30.413 回答