Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.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
C# 无法将默认服务描述作为升级集EnableDefaultServicesUpgrade设置为true的一部分进行修改_C#_Azure Service Fabric - Fatal编程技术网

C# 无法将默认服务描述作为升级集EnableDefaultServicesUpgrade设置为true的一部分进行修改

C# 无法将默认服务描述作为升级集EnableDefaultServicesUpgrade设置为true的一部分进行修改,c#,azure-service-fabric,C#,Azure Service Fabric,我正在尝试通过Visual Studio升级我的Service Fabric应用程序 最后,我不得不使用diff包方法来确保升级中只有我更改的服务 我通过一个命令文件删除了非必需的文件 现在,我遇到了另一个因缺乏细节而令人恼火的错误: Start-ServiceFabricApplicationUpgrade : Default service descriptions can not be modified as part of upgrade. Modified 2>default

我正在尝试通过Visual Studio升级我的Service Fabric应用程序

最后,我不得不使用diff包方法来确保升级中只有我更改的服务

我通过一个命令文件删除了非必需的文件

现在,我遇到了另一个因缺乏细节而令人恼火的错误:

Start-ServiceFabricApplicationUpgrade : Default service descriptions can not be modified as part of upgrade. Modified 
2>default service: fabric:/MYAPPLICATION/MYSERVICE. To allow it, set 
2>EnableDefaultServicesUpgrade to true.
我应该把这个放在哪里

请注意,这是来自VisualStudio的

使用PowerShell我很少能得到任何乐趣

我看到了对Update-ServiceFabricsService CmdLet的引用,但是没有更多关于我需要做什么的信息

我已在应用程序清单中尝试此操作,但未成功:

<?xml version="1.0" encoding="utf-8"?>
<ApplicationManifest xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ApplicationTypeName="MyServiceFabricApplication.ServiceFabricType" ApplicationTypeVersion="7.0.0" xmlns="http://schemas.microsoft.com/2011/01/fabric">
  <Parameters>
    <Parameter Name="EnableDefaultServicesUpgrade" DefaultValue="true" />
    <Parameter Name="MyParameter" DefaultValue="value" />
    Parameters>
  <ServiceManifestImport>
    <ServiceManifestRef ServiceManifestName="MyServiceFabricApplication.Service1.ServiceFabricPkg" ServiceManifestVersion="4.0.0" />
    <ConfigOverrides>
      <ConfigOverride Name="Config">
        <Settings>
          <Section Name="appSettings">
            <Parameter Name="MyParameter" Value="[MyParameter]" />
          </Section>
        </Settings>
      </ConfigOverride>
    </ConfigOverrides>
  </ServiceManifestImport>
  <ServiceManifestImport>
    <ServiceManifestRef ServiceManifestName="MyServiceFabricApplication.Service2.ServiceFabricPkg" ServiceManifestVersion="2.0.0" />
    <ConfigOverrides>
      <ConfigOverride Name="Config">
        <Settings>
          <Section Name="appSettings">
            <Parameter Name="MyParameter" Value="[MyParameter]" />
          </Section>
        </Settings>
      </ConfigOverride>
    </ConfigOverrides>
  </ServiceManifestImport>
  <ServiceManifestImport>
    <ServiceManifestRef ServiceManifestName="MyServiceFabricApplication.Service3.ServiceFabricPkg" ServiceManifestVersion="3.0.0" />
    <ConfigOverrides>
      <ConfigOverride Name="Config">
        <Settings>
          <Section Name="appSettings">
            <Parameter Name="MyParameter" Value="[MyParameter]" />
          </Section>
        </Settings>
      </ConfigOverride>
    </ConfigOverrides>
  </ServiceManifestImport>
  <ServiceManifestImport>
    <ServiceManifestRef ServiceManifestName="MyServiceFabricApplication.Service4.ServiceFabricPkg" ServiceManifestVersion="2.0.0" />
    <ConfigOverrides>
      <ConfigOverride Name="Config">
        <Settings>
          <Section Name="appSettings">
            <Parameter Name="MyParameter" Value="[MyParameter]" />
          </Section>
        </Settings>
      </ConfigOverride>
    </ConfigOverrides>
  </ServiceManifestImport>
  <ServiceManifestImport>
    <ServiceManifestRef ServiceManifestName="MyServiceFabricApplication.PlatformApi.ServiceFabricPkg" ServiceManifestVersion="2.0.0" />
    <ConfigOverrides>
      <ConfigOverride Name="Config">
        <Settings>
          <Section Name="appSettings">
            <Parameter Name="MyParameter" Value="[MyParameter]" />
          </Section>
        </Settings>
      </ConfigOverride>
    </ConfigOverrides>
  </ServiceManifestImport>
  <ServiceManifestImport>
    <ServiceManifestRef ServiceManifestName="MyServiceFabricApplication.LivePriceManager.ServiceFabricPkg" ServiceManifestVersion="3.0.0" />
    <ConfigOverrides>
      <ConfigOverride Name="Config">
        <Settings>
          <Section Name="appSettings">
            <Parameter Name="MyParameter" Value="[MyParameter]" />
          </Section>
        </Settings>
      </ConfigOverride>
    </ConfigOverrides>
  </ServiceManifestImport>
  <ServiceManifestImport>
    <ServiceManifestRef ServiceManifestName="MyServiceFabricApplication.Service5.ServiceFabricPkg" ServiceManifestVersion="3.0.0" />
    <ConfigOverrides>
      <ConfigOverride Name="Config">
        <Settings>
          <Section Name="appSettings">
            <Parameter Name="MyParameter" Value="[MyParameter]" />
          </Section>
        </Settings>
      </ConfigOverride>
    </ConfigOverrides>
  </ServiceManifestImport>
  <DefaultServices>
    <Service Name="Service1" ServicePackageActivationMode="ExclusiveProcess">
      <StatelessService ServiceTypeName="MyServiceFabricApplication.Service1.ServiceFabricType">
        <SingletonPartition />
      </StatelessService>
    </Service>
    <Service Name="Service2" ServicePackageActivationMode="ExclusiveProcess">
      <StatelessService ServiceTypeName="MyServiceFabricApplication.Service2.ServiceFabricType">
        <SingletonPartition />
      </StatelessService>
    </Service>
    <Service Name="Service3" ServicePackageActivationMode="ExclusiveProcess">
      <StatelessService ServiceTypeName="MyServiceFabricApplication.Service3.ServiceFabricType">
        <SingletonPartition />
      </StatelessService>
    </Service>
    <Service Name="Service7" ServicePackageActivationMode="ExclusiveProcess">
      <StatelessService ServiceTypeName="MyServiceFabricApplication.Service7.ServiceFabricType">
        <SingletonPartition />
      </StatelessService>
    </Service>
    <Service Name="Service5" ServicePackageActivationMode="ExclusiveProcess">
      <StatelessService ServiceTypeName="MyServiceFabricApplication.Service5.ServiceFabricType">
        <SingletonPartition />
      </StatelessService>
    </Service>
    <Service Name="Service6" ServicePackageActivationMode="ExclusiveProcess">
      <StatelessService ServiceTypeName="MyServiceFabricApplication.Service6.ServiceFabricType">
        <SingletonPartition />
      </StatelessService>
    </Service>
    <Service Name="Service4" ServicePackageActivationMode="ExclusiveProcess">
      <StatelessService ServiceTypeName="MyServiceFabricApplication.Service4.ServiceFabricType">
        <SingletonPartition />
      </StatelessService>
    </Service>
  </DefaultServices>
</ApplicationManifest>

参数>

保罗首先,在我给你一个解决方案之前,我会给出一个理由

EnableDefaultServicesUpgrade
是一个允许在应用程序升级期间升级默认服务描述的标志。当设置为true时,默认服务描述将被新值覆盖,这是为了防止对描述的意外更改导致可能的故障或数据丢失

  • 当设置为false(默认值)时,它将进行检查以防止发生故障
  • 当设置为true时,您假定这些更改是安全的
例如,当您更改服务中的分区数时,SF预测这将导致数据丢失或其他故障

修复方法:

EnableDefaultServicesUpgrade
是集群定义中的标志,而不是服务中的标志。您必须在集群清单中设置此项

您的群集清单将有一个如下所示的部分:

...some stuff above...
{
  "name": "ClusterManager",
  "parameters": [
  {
    "name": "EnableDefaultServicesUpgrade",
    "value": true
  }]
  ... some more stuf below
 }
要在Azure上更改它,请执行以下操作:

您可以使用门户“”,如中所述

本地群集上:

从群集安装文件夹复制
clusterconfig.json
,使用以下命令
Start servicefactclusterconfigurationupgrade-clusterconfigurationpath应用更改以触发群集升级。\clusterconfig.json

顺便说一下


您使用的是DefaultServices,您应该避免使用它,关于为什么要使用它,有很多问题。

谢谢,我会尝试一下。我的服务都是无状态的。我想做的就是能够在不关闭未受影响的服务的情况下升级集群,他们让这一切看起来像是开箱即用,很好,很简单,但事实并非如此!我不知道默认服务是什么,我只是使用标准服务结构模板进行设置。为了便于学习和开发,您应该避免在生产中使用它,因为存在类似于此的问题。在集群清单上,我假设问题是因为您将实例计数设置为变量,但没有在
部分作为参数传递。好的,我真的不知道从哪里开始不使用DefaultServices这是我第一次听说它们?我已经更正了此处显示的清单。如果我不进行升级就发布,那么只要有正确数量的实例,就可以正常部署。MS经常说的一件重要事情是,您可以升级集群而不影响其他未更改的服务,这就是我正在尝试做的,我将把这标记为已接受的答案谢谢!就像我说的,我对默认/非默认服务一无所知,我将不得不单独研究