Service Fabric部署错误:服务缺少ServiceManifest.xml

时间:2016-08-26 11:45:56

标签: azure-service-fabric

我已将无状态服务结构项目添加到我的解决方案中,并将其设置为Web Api自托管主机。 我在Visual Studio添加的任何文件中都没有触及任何内容。唯一有点错误的是解决方案文件上的Git合并错误,导致我不得不再次手动添加项目。

项目命名如下:

  • 项目名称/ sfproj:ClientCore.CommandStackApi.Deploy
  • 服务名称/ csproj:ClientCore.CommandStackApi

当我尝试部署时,出现以下错误:

  

应用程序的BuildLayout   C:\ SfDevCluster \ DATA \ ImageBuilderProxy \的AppType \ ClientCore.CommandStackApi.DeployType   是无效的。服务缺少ServiceManifest.xml   ClientCore.CommandStackApiPkg。

当我比较文件和我能想到的所有项目设置时,我的其他Service Fabric项目看起来一切都很好,但它一直在抱怨服务清单丢失了。我唯一注意到的是SF项目缺少对CommandStackApi项目的依赖,但这并没有改变任何东西。

我已尝试过两台不同的计算机,最后一台计算机全新安装了Service Fabric SDK等。

我猜它会在我删除所有项目并重新设置所有项目时能够正常工作,但是当我尝试从MSDN指南中完全构建部署包和PowerShell脚本时,这也发生了,所以我真的会比如对我可能做错的一些见解。如果这个问题发生在一个更成熟的项目中,我将无法从头开始重新创建解决方案并进入Visual Studio blackbox魔术设置,它必须在幕后进行。任何可能出错的想法都会受到赞赏。

4 个答案:

答案 0 :(得分:17)

所以我终于弄清楚出了什么问题。

我正在查看文件和项目依赖项,但错过了缺少的服务依赖项。当两个项目通过合并从解决方案中删除时,SF项目必须丢失服务引用。添加这个以解决问题。

答案 1 :(得分:0)

当我将现有的Service Fabric项目(.csproj)添加到Service项目(.sfproj)时,我不得不在\ ApplicationPackageRoot \ ApplicationManifest.xml文件中手动创建两个部分。

示例:

const bodyParser = require('body-parser');
...
app.post('/videos/upload', bodyParser.raw({ type : '*/*' }), (request, response) => {
  let data = req.body; // a `Buffer` containing the entire uploaded data
  ...do something...
});

<ServiceManifestImport>
  <ServiceManifestRef ServiceManifestName="Sample.Service.Commander" ServiceManifestVersion="1.0.0" />
  <ConfigOverrides>
    <ConfigOverride Name="Config">
      <Settings>
        <Section Name="EndpointConfigSection">
          <Parameter Name="UseDifferentPorts" Value="[StatelessServices_UseDifferentPorts]" />
        </Section>
      </Settings>
    </ConfigOverride>
  </ConfigOverrides>
  <Policies>
    <EndpointBindingPolicy EndpointRef="OwinEndpoint" CertificateRef="ClusterCert" />
    <EndpointBindingPolicy EndpointRef="OwinEndpoint0" CertificateRef="ClusterCert" />
    <EndpointBindingPolicy EndpointRef="OwinEndpoint1" CertificateRef="ClusterCert" />
    <EndpointBindingPolicy EndpointRef="OwinEndpoint2" CertificateRef="ClusterCert" />
    <EndpointBindingPolicy EndpointRef="OwinEndpoint3" CertificateRef="ClusterCert" />
    <EndpointBindingPolicy EndpointRef="OwinEndpoint4" CertificateRef="ClusterCert" />
  </Policies>
</ServiceManifestImport>

答案 2 :(得分:0)

我在Fabric项目中添加了删除的服务项目,并添加了对服务项目的依赖关系,

答案 3 :(得分:0)

更改服务名称时也会出现此错误。

servicemanifestapplicationmanifest更新失败时。 applicationmanifest必须ServicemanifestRef的确切文件名。

对我来说,文件名中的下划线(由于重命名)是断点。