Как параметризовать файлы конфигурации в Service Fabric
В этой статье описывается, как параметризовать файл конфигурации в Service Fabric. Дополнительные сведения об основных концепциях см. в разделе Управление приложениями для нескольких сред.
Процедура параметризации файлов конфигурации
В этом примере с помощью параметров в развертывании приложения переопределяется значение конфигурации.
Откройте файл <MyService>\PackageRoot\Config\Settings.xml в проекте службы.
Задайте имя и значение параметра конфигурации, например кэш размером 25, добавив следующий XML:
<Section Name="MyConfigSection"> <Parameter Name="CacheSize" Value="25" /> </Section>
Сохранить и закрыть файл.
Откройте файл <MyApplication>\ApplicationPackageRoot\ApplicationManifest.xml.
В файле ApplicationManifest.xml объявите параметр и значение по умолчанию в элементе
Parameters
. Рекомендуется задавать имя параметра с содержанием имени службы (например, "MyService").<Parameters> <Parameter Name="MyService_CacheSize" DefaultValue="80" /> </Parameters>
В разделе
ServiceManifestImport
файла ApplicationManifest.xml добавьте элементыConfigOverrides
иConfigOverride
, ссылаясь на пакет конфигурации, раздел и параметр.<ConfigOverrides> <ConfigOverride Name="Config"> <Settings> <Section Name="MyConfigSection"> <Parameter Name="CacheSize" Value="[MyService_CacheSize]" /> </Section> </Settings> </ConfigOverride> </ConfigOverrides>
Примечание.
В случае добавления ConfigOverride служба Service Fabric всегда выбирает параметры приложения или значение по умолчанию, указанное в манифесте приложения.
Доступ к параметризованным конфигурациям в коде
Вы можете получить доступ к конфигурации в файле settings.xml программным способом. Предположим, имеется следующий XML-файл конфигурации:
<Settings
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://schemas.microsoft.com/2011/01/fabric">
<!-- Add your custom configuration sections and parameters here -->
<Section Name="MyConfigSection">
<Parameter Name="MyParameter" Value="Value1" />
</Section>
</Settings>
Для доступа к параметрам используйте следующий код:
CodePackageActivationContext context = FabricRuntime.GetActivationContext();
var configSettings = context.GetConfigurationPackageObject("Config").Settings;
var data = configSettings.Sections["MyConfigSection"];
foreach (var parameter in data.Parameters)
{
ServiceEventSource.Current.ServiceMessage(this.Context, "Working-{0} - {1}", parameter.Name, parameter.Value);
}
Здесь Parameter.Name
будет иметь значение MyParameter, а Parameter.Value
— Value1.
Следующие шаги
Сведения о других возможностях управления приложениями, доступными в Visual Studio, см. в статье Использование Visual Studio для упрощения создания приложений Service Fabric и управления ими.