csrun& cspack - sitePhysicalDirectories的目的是什么?

时间:2011-05-17 13:35:28

标签: azure azure-compute-emulator cspack

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

部署后,csrun会设置一个直接指向sitePhysicalDirectory路径的IIS站点,并且似乎完全忽略csx包中打包的Web角色二进制文件。毋庸置疑,不同机器上的测试部署不起作用。

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

3 个答案:

答案 0 :(得分:6)

我开始认为所有这些问题的答案都是“因为cspack / csrun是设计糟糕的垃圾堆,应该永远不会发货”。它们似乎是为Visual Studio支持而构建的。

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

答案 1 :(得分:2)

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

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

答案 2 :(得分:1)

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