Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure csrun&;cspack-什么&x27;SitePhysicalDirectory的用途是什么?_Azure_Azure Compute Emulator_Cspack - Fatal编程技术网

Azure csrun&;cspack-什么&x27;SitePhysicalDirectory的用途是什么?

Azure csrun&;cspack-什么&x27;SitePhysicalDirectory的用途是什么?,azure,azure-compute-emulator,cspack,Azure,Azure Compute Emulator,Cspack,我正在尝试在我的构建服务器上使用cspack构建Azure部署包,以便在测试服务器上进行devfabric部署(csrun)。cspack尽职尽责地将web角色二进制文件和文件复制到csx包中,但它还需要每个web角色的“sitePhysicalDirectory”路径,该路径嵌入到“RoleModel.xml”文件中。此目录必须在打包时存在 部署后,csrun将设置一个直接指向sitePhysicalDirectory路径的IIS站点,并且似乎完全忽略csx包中打包的web角色二进制文件。不用

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

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


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

我开始认为所有这些问题的答案都是“因为cspack/csrun是设计拙劣的垃圾堆,本不应该运送”。它们似乎是为VisualStudio支持而构建的,而不是其他


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

我认为这部分与添加完整的IIS有关。过去的情况是,您在Windows Azure中的Approt目录同时用于RoleEntryPoint进程,而IIS是主机(同一个进程中的一个)。但是,如果使用完整的IIS,则w3wp.exe将运行web代码,而WaWorker进程将执行RoleEntryPoint


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

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

谢谢,这有助于澄清一点。这当然是针对完整的IIS完成的,但是csx包似乎没有两个代码副本——它有一个代码副本,还有一个对包外文件系统上的代码的引用。这对于VisualStudio中的F5来说很好,但是在构建服务器上构建和在测试服务器上部署都离不开对包内部的处理。这让人怀疑Azure的工程师们是否理解“包”这个术语的一般含义。我将把你作为答案,因为我意识到这不是一个特别好的问题。自我提醒:不要在对蹩脚的框架代码生气时发帖。是的!遗憾的回答……:)我将不得不重新检查包结构。我的答案在1.3版本中是正确的,我想他们可能已经修复了1.4更新中的双拷贝。山姆,你是如何解决这个问题的?我们现在正在这样做,却遇到了完全相同的问题。我真的不想在托管模拟器的内部测试服务器上远程执行cspack/csrun,但这是我目前唯一的想法。我设法让cspack与一些手动黑客一起工作,但我从未在csrun上有过任何运气。我尝试了psexec和powershell到测试服务器的远程处理,但都出现了问题。我得出的结论是csrun实际上只是为dev工作站设计的,而我所做的尝试就是与这些工具作斗争。我们最终只是使用单独的包将msdeploy用于一个普通的web应用程序——这可能适合您的情况,也可能不适合您的情况。当涉及到肉的时候,所有这些都变得更糟。我也遇到了同样的情况,并在测试服务器中为webrole编辑了csx文件中的物理目录,但是worker角色仍然不工作,并且仍然指向dev机器中的worker角色路径。我遇到了类似的困难,最终放弃了CSPack并改为使用msbuild。请看这里: