首页 > 解决方案 > https 和 Service Fabric 的问题

问题描述

在尝试在我们的 ServiceFabric 后端实现 https 时,按照指南,我发现我的本地集群抛出以下错误:

CodePackage 激活过程中出错。服务主机以退出代码终止:1

有时会弹出以下内容:

fabric:/Dev.Project/Api 未准备好,剩余 1 个分区。=> 有些事情花费的时间太长,应用程序还没有准备好。

在诊断事件中,我发现了这个

{
  "Timestamp": "2018-08-20T12:01:21.6423999+02:00",
  "ProviderName": "Microsoft-ServiceFabric",
  "Id": 23083,
  "Message": "ApplicationHostTerminated:   ApplicationId=fabric:/Dev.Project,  ServiceName=fabric:/Dev.Project/Api,  ServicePackageName=ApiPkg,  ServicePackageActivationId=1d4426dc-3d5e-41ea-aa44-6e9794ff7c69,  IsExclusive=True,  CodePackageName=Code,  EntryPointType=Exe,  ExeName=Setup.bat,  ProcessId=29024,  HostId=77c22be7-b993-46c6-92dd-7c7ed0c8af1c,  ExitCode=1,  UnexpectedTermination=True,  StartTime=12:01:21.568939 (151,099.982 MSec). ",
  "ProcessId": 25768,
  "Level": "Informational",
  "Keywords": "0x4000000000000001",
  "EventName": "Hosting",
  "ActivityID": null,
  "RelatedActivityID": null,
  "Payload": {
    "eventInstanceId": "6dbdc967-85ed-429a-ae6a-939aeeea1e3f",
    "applicationName": "fabric:/Dev.Project",
    "ServiceName": "fabric:/Dev.Project/Api",
    "ServicePackageName": "ApiPkg",
    "ServicePackageActivationId": "1d4426dc-3d5e-41ea-aa44-6e9794ff7c69",
    "IsExclusive": true,
    "CodePackageName": "Code",
    "EntryPointType": 1,
    "ExeName": "Setup.bat",
    "ProcessId": 29024,
    "HostId": "77c22be7-b993-46c6-92dd-7c7ed0c8af1c",
    "ExitCode": 1,
    "UnexpectedTermination": true,
    "StartTime": "2018-08-20T12:01:21.5689395+02:00"
  }
}

Id 是我的 Api 服务的 Id。它可能与未正确执行的 Setup.bat 有关,或者在运行时引发错误,但我不知道该怎么做。如指南中所述,我添加了

<Principals>
  <Users>
    <User Name="SetupAdminUser">
      <MemberOf>
        <SystemGroup Name="Administrators" />
      </MemberOf>
    </User>
  </Users>
</Principals>

部分,并将 RunAsPolicy 也添加到服务中

<ServiceManifestImport>
  <ServiceManifestRef ServiceManifestName="ApiPkg" ServiceManifestVersion="1.0.0" />
  <ConfigOverrides>
    <ConfigOverride Name="Config">
      ...
    </ConfigOverride>
  </ConfigOverrides>
  <EnvironmentOverrides CodePackageRef="Code">
    ...
  </EnvironmentOverrides>
  <Policies>
    <RunAsPolicy CodePackageRef="Code" UserRef="SetupAdminUser" EntryPointType="Setup" />
  </Policies>
</ServiceManifestImport>

我搜索了所有内容,但找不到问题所在。欢迎任何意见!提前致谢!

标签: httpsazure-service-fabric

解决方案


这对我有用。我添加了 LocalSystem 而不是 Admin 用户。

 <Policies>
  <RunAsPolicy CodePackageRef="Code" UserRef="SetupLocalSystem" EntryPointType="Setup" />
</Policies>

 <Principals>
<Users>
  <User Name="SetupLocalSystem" AccountType="LocalSystem" />
</Users>

还要注意 SetCertAccess.ps1 文件中的 DNS 名称,它应该与集群名称相同。

$subject="your cluster DNS name"

推荐阅读