我已按以下方式设置Service Fabric应用程序:
Solution
--SF Project
--ApplicationManifest.xml
--Stateless Project (uses app manifest values)
--Stateless Project (uses app manifest values)
--Class Library (used as a repository by the above two projects)
如何启用类库以使用SF Project中的ApplicationManifest.xml配置文件?
为了让项目能够使用AppManifest进行构建/部署,他们只需要像这样创建:
未作为Service Fabric项目添加的项目如何使用applicationmanifest?
Service Fabric项目能够通过在settings.xml和servicemanifest中包含参数来使用appmanifest(但非SF项目不能):
答案 0 :(得分:1)
选项#1
如果您需要访问服务的setting.xml中定义的参数,那么下一个应该可以工作 -
无论您何时决定访问参数,请使用下一个代码段 -
var builder = new ConfigurationBuilder().AddFabricConfiguration("Config");
var configuration = builder.Build();
var section = configuration.GetSection("MyConfigSection");
var parameterValue = section["MyParameter"];
但需要注意的是 - 您一次只能访问一个SF服务。这是因为AddFabricConfiguration()通过调用FabricRuntime.GetActivationContext()来工作,它将正在加载的设置与您正在调用非SF代码的SF服务联系起来。
选项#2
下一个选项可以在任何可以与SF建立连接的地方使用。使用下面的代码,您可以读取传递到应用清单中的任何参数 -
var fClient = new FabricClient();
var namespaceManager = new XmlNamespaceManager(new NameTable());
namespaceManager.AddNamespace("ns", "http://schemas.microsoft.com/2011/01/fabric");
var manifest = XDocument.Parse(fClient.ApplicationManager.GetApplicationManifestAsync("YOUR_APP_TYPE_NAME", "YOUR_APP_TYPE_VERSION").Result);
var parameterValue = manifest.XPathSelectElement("/ns:ApplicationManifest/ns:Parameters/ns:Parameter[@Name='PARAMETER_NAME']", namespaceManager).Attribute("DefaultValue").Value;