【问题标题】:The process cannot access a file because it is being used by another process while doing web deployment该进程无法访问文件,因为在进行 Web 部署时它正被另一个进程使用
【发布时间】:2011-12-30 09:53:38
【问题描述】:

我每天使用 TFS 的自动 Web 部署来分解我的构建。在我的网站中,我有一个日志文件。部署时出现“该进程无法访问文件,因为它正被另一个进程使用”这个错误会导致部署失败。

谁能告诉我如何在自动部署时强制删除旧的?我必须做 IISRESET 才能部署。 谢谢 阿什瓦尼

【问题讨论】:

  • 你确定是日志文件导致了这个吗?
  • 是的,我正在使用企业库来登录文件,并且该错误仅针对该文件。
  • 日志文件是您部署的一部分吗?还是部署尝试删除它?你能把你的日志文件放在不同的文件夹里吗?
  • 该文件不是部署的一部分。部署尝试删除该文件。

标签: iis deployment msbuild


【解决方案1】:

您需要在尝试部署之前执行完整的iisreset /stop,然后在部署成功后使用iisreset /start 重新启动您的服务器。

或者,如果您在同一主机上有其他网站,请尝试自行停止应用程序池,部署,然后重新启动应用程序。水池。您可以为此使用appcmd

  • appcmd list apppool 列出您的应用程序池
  • appcmd stop apppool <name> 停止一个游泳池
  • appcmd start apppool <name> 启动一个池

要从 MSBuild 执行此操作,请尝试使用 extension pack

【讨论】:

    【解决方案2】:

    如果您为 FlatfileTraceListener 指定的文件是只读的,则跟踪侦听器不会将数据写入文件并且不会发生异常。确保文件属性设置为读/写。 当您使用 FlatFileTraceListener 类将日志信息写入文件时,应用程序块会锁定文件,直到应用程序关闭。可以打开和读取文件,但在关闭应用程序之前不能移动或删除日志文件。

    https://msdn.microsoft.com/en-us/library/ff648115.aspx

    【讨论】:

      猜你喜欢
      • 2010-12-10
      相关资源
      最近更新 更多