2017-01-17 2 views
1

Возможно ли получить имя приложения Service Fabric, где работает мой код?Как я могу получить имя имени текущего приложения Fabric?

Например, мой файл ApplicationParameters имеет это:

<Application xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="fabric:/mytestapp" xmlns="http://schemas.microsoft.com/2011/01/fabric"> 

Я хочу, чтобы получить «mytestapp» и использовать его в своем коде, но я ничего, что позволит мне сделать это не найден. Есть идеи?

ответ

2

ApplicationName присутствует как строка (к сожалению, не URI) как свойство в CodePackageActivationContext.

// System.Fabric.CodePackageActivationContext 
public string ApplicationName 
{ 
    get; 
    internal set; 
} 

CodePackageActivationContext присутствует в ServiceContext, что каждая служба передается в его конструкторе. Пример из служб с сохранением состояния.

StatefulService(StatefulServiceContext serviceContext) : this(serviceContext, new ReliableStateManager(serviceContext, null)) 

Если услуга является гостем или контейнер или что-то, что не использует API ReliableServices, затем передавая имя явно в качестве параметра конфигурации, вероятно, ваш лучший выбор.

+0

Отлично, спасибо! – bwmartens

1

В моем случае, я пытался общаться вышеуказанной ApplicationName между проектами (Stateful на Безгражданства в моем случае), но это было удивительно больно, до точки, это было невозможно, потому что есть несоответствие в стоимости в связи с различным VM и узлы постоянно меняются.

Я попытался связаться с использованием статических переменных во внешнем проекте или записать имя приложения в файл, но первый не работал вообще, а последний работал только временно.

Мое решение должно было использовать Environment.GetEnvironmentVariable("Fabric_ApplicationName"), который отлично работал.

См. here.

Надеюсь, это поможет.

Смежные вопросы