MSDeploy抛出奇怪的错误:xxxxx.dll的流数据尚不可用

时间:2013-05-02 20:46:15

标签: .net windows-server-2008 msdeploy windows-server microsoft-web-deploy

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

今天,部署连续几次失败并出现一些不同的错误。仅这一点让我感到困惑(也许并不相关),但现在我得到的是:

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

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

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

我见过this problem但是我没有推动Azure,只是推向Windows Server 2008.有谁知道为什么Microsoft Web部署(msdeploy)会抛出此错误?

3 个答案:

答案 0 :(得分:7)

我遇到了同样的问题。尝试使用相同的错误部署几次。

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

答案 1 :(得分:2)

我们遇到的问题与SQLite.Interop.dll一样(在我们的Web应用程序中由ELMAH使用。)正如我所知,问题与我们正在使用DLL SQLite.Interop.dll这一事实有关。通过ELMAH的web应用程序,由于某种原因,这个DLL不是影子复制。我们使用的解决方案是recommended here在每次部署时回收应用程序池。我们的命令就像:

"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”,我们不需要尝试。

答案 2 :(得分:0)

我一直在遭受与你今天完全相同的问题,并且在没有回答的情况下遇到了你的问题,开始把我的头发拉出来...关于这个问题的文章或建议很少,我几乎给了向上!!

但是,我已经能够为我解决问题所以我发布了我的解决方案,以帮助自己和其他任何患此问题的人。

无论出于何种原因,我的网站& IIS中的AppPool有点混乱并开始抛出错误,如上面的问题所述。为了解决这个问题,我取下了原始网站(停止了网站和AppPool),使用相同的设置创建了一个全新的网站和AppPool,使用WebDeploy发布到它,现在它似乎再次表现出来了。

这可能不适用于其他人,但希望能给别人一些其他的尝试。