【问题标题】:Why does WAIISHost lock certain files为什么 WAIISHost 会锁定某些文件
【发布时间】:2013-01-14 06:28:55
【问题描述】:

我正在将 Web 应用程序部署到 azure。该应用程序是使用 Nancy 构建的,并且没有定义 RoleEntryPoint(请注意这不是问题,网站本身运行良好)。当我部署到 azure 时,我启用了 Web 部署选项。

当我尝试运行网络部署时,出现以下错误:

错误 7 Web 部署任务失败。((6/26/2012 12:28:45 PM) 错误 在远程计算机上处​​理请求时发生。)

(2012 年 6 月 26 日下午 12:28:45)请求时发生错误 在远程计算机上处​​理。时遇到错误 处理“Castle.Windsor.dll”上的“创建文件”操作。错误 代码是 0x80070020。进程无法访问 'E:\approot\bin\Castle.Windsor.dll' 因为它正被 另一个进程。

我已将 RDP 加入角色实例并使用流程资源管理器,我看到 WAIISHost 锁定了我的项目引用的许多程序集。

我无法确定导致这些文件被锁定的原因。

谢谢, 杰森

【问题讨论】:

    标签: azure castle-windsor webdeploy nancy


    【解决方案1】:

    Web Deploy 不适用于生产环境。 (described here)

    WaIisHost.exe 是完整 IIS Web 角色的角色软管进程,因此当您的 Web 角色启动时,您的角色 DLL 会在此进程中加载​​。在您的 webrole 的生命周期中,角色 dll 被加载到主机进程中并且无法更改。由于 Castle.Windsor.dll 位于角色特定 DLL 所在的 E:\approot\bin* 中,因此宿主进程已在其中加载了此二进制文件。

    如果您想更新您需要的 Web 角色,您可以从门户或 powershell 选择 Windows Azure 升级选项。

    【讨论】:

    • 我知道它不用于生产,我只是想避免 20 多分钟的等待来进行细微的更改。由于我没有执行任何角色输入代码,我不清楚为什么这些应用程序在 approot 中加载(而不是站点根目录)。我能做些什么来防止这种情况发生。还是有其他方法可以让 Web 部署正常工作?
    • 原因正如我所描述的,当角色主机运行时,您的角色 dll 被加载到主机进程中,因此除非角色关闭,否则您无法更新它,这就是更新进程所做的。
    • 所以似乎无法使用 webdeploy 更新 azure web 角色,我感到惊讶和失望。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多