Core 3.1中的无状态服务需要一个有问题的Nuget包。如果我的csproj看起来像默认值:
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.1</TargetFramework>
<IsServiceFabricServiceProject>True</IsServiceFabricServiceProject>
<ServerGarbageCollection>True</ServerGarbageCollection>
<RuntimeIdentifier>win7-x64</RuntimeIdentifier>
<TargetLatestRuntimePatch>False</TargetLatestRuntimePatch>
<Configurations>Debug;Release;Staging</Configurations>
</PropertyGroup>
由于System.BadImageFormatException,应用程序无法在本地运行:'试图加载格式不正确的程序。(0x8007000B)
修改csproj看起来像:
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.1</TargetFramework>
<IsServiceFabricServiceProject>True</IsServiceFabricServiceProject>
<ServerGarbageCollection>True</ServerGarbageCollection>
<TargetLatestRuntimePatch>False</TargetLatestRuntimePatch>
<Configurations>Debug;Release;Staging</Configurations>
<Platforms>x64</Platforms>
</PropertyGroup>
允许它在部署到我的计算机上的本地群集进行测试时正常工作。
但是,一旦部署到Azure,它就会失败。我无法确定来源或错误消息。我的日志记录没有被调用,所以我假设它在很早的时候就失败了。Service Fabric Explorer给出了一条非常无用的通用错误消息“There was an error during CodePackage activation.Container failed to start for image,exit code:2147516547.
为什么本地与Azure的行为不同,是否可以进行一些更改以使Azure像本地集群一样工作,以便运行?
1条答案
按热度按时间xmq68pz91#
我也有同样的问题。当Azure DevOps管道部署到Azure中的ServiceFabric时,我遇到了错误“在CodePackage激活期间出现错误。进程/容器终止,退出代码为:2147516547”。根据这一页“
此健康消息中的退出代码是进程或容器提供的关于其终止原因的唯一线索。
但它可以在我的
ServiceFabric
集群上本地工作。退出代码将我引导到这个StackOverflow页面,此时我注意到CSPROJ文件中的“Platforms”节点丢失了。