在服务代码中解析HttpApplicationGatewayEndpoint的最佳方法

时间:2017-03-24 20:34:01

标签: azure-service-fabric

以下是问题 - 如何在服务代码中解析特定节点类型的http网关端口和协议?到目前为止,我确实只通过解析这样的应用程序清单来获取此信息 -

var fabricClient = new FabricClient();

var appManifest = await fabricClient.ClusterManager.GetClusterManifestAsync();

var document = XDocument.Parse(appManifest);

var nodeTypeObj = document.Root.Descendants()
                               .Where(d => d.Name.LocalName == "NodeTypes")
                               .Descendants()
                               .Where(e => e.Name.LocalName == "NodeType")
                               .First(e => e.Attributes().Any(a => a.Name.LocalName == "Name" && a.Value == this.Context.NodeContext.NodeType));

var gateway = nodeTypeObj.Descendants()
                         .Where(d => d.Name.LocalName == "HttpApplicationGatewayEndpoint")
                         .First();

var port = gateway.Attributes().First(a => a.Name.LocalName == "Port").Value;
var protocol = gateway.Attributes().First(a => a.Name.LocalName == "Protocol").Value;

有没有更简单的方法来获得这些价值?类似于我在调用时传递节点类型并返回所有节点类型配置的东西的方法?包括HttpApplicationGatewayEndpoint?

1 个答案:

答案 0 :(得分:0)

看起来你正在抓集群集清单 - 我可能不建议去那么远。

没有特定的API来获取该信息所以我会按照惯例选择一个端口并使用它(默认的19008可以工作),或者如果您认为将端口放在环境变量或配置包中它会在环境之间发生变化。