3

我正在尝试在构建服务器上使用 cspack 构建 Azure 部署包,以便将 devfabric 部署 (csrun) 部署到测试服务器上。cspack 尽职尽责地将 Web 角色二进制文件和文件复制到 csx 包中,但它还需要每个 Web 角色的“sitePhysicalDirectory”路径,该路径嵌入在“RoleModel.xml”文件中。此目录在打包时必须存在。

部署后,csrun 会设置一个直接指向 sitePhysicalDirectory 路径的 IIS 站点,并且似乎完全忽略了 csx 包中打包的 Web 角色二进制文件。不用说,在另一台机器上进行测试部署是行不通的。

我在这里错过了什么吗?cspack/csrun为什么不能将IIS中的物理路径设置为csx包中的approot?如果不使用打包的二进制文件,csx 包的目的是什么?sitePhysicalDirectories 在生产 Azure 部署中的作用是什么?

4

3 回答 3

6

我开始认为所有这些问题的答案是“因为 cspack/csrun 是设计不良的一堆垃圾,不应该被运送”。它们似乎是为 Visual Studio 支持而构建的,仅此而已。

打包后手动更新 RoleModel.xml 文件以将 physicalPath 属性设置为“approot”(它相对于 RoleModel.xml 位置)似乎是一种可行的解决方法。

于 2011-05-17T14:29:49.170 回答
2

我认为这部分与添加完整的 IIS 有关。过去,Windows Azure 中的 approot 目录同时用于 RoleEntryPoint 进程和 IIS WAS 主机(同一个)。但是,使用完整的 IIS,您将让 w3wp.exe 运行您的 Web 代码,并让 WaWorker 进程执行您的 RoleEntryPoint。

决定将整个网站(也有 WebRole.cs RoleEntryPoint)有效地复制到一个新目录并在那里根完整 IIS。因此,您会注意到您的 Web 角色打包实际上包含您的代码副本两次。一次用于网站,一次用于 WebRole.cs RoleEntryPoint。现在只有您的 RoleEntryPoint 在 approot 之外执行。我不记得发生这种情况的所有技术原因,但是将网站复制出来可能更容易/更安全,而不是冒险丢失依赖项。

于 2011-05-18T15:47:32.920 回答
1

我认为sitePhysicalDirectory应该将其设置为 csx 包中 AppRoot 下的文件夹,而不是 Web 角色二进制文件和文件的来源。

于 2011-09-26T18:37:23.113 回答