在 Azure 中管理将代码更改部署到 Dev、Test 和 Prod 环境的好方法是什么?Azure / Service Fabric 站点提供了一篇文章,用于使用操作指南下的参数指定端口号 - 管理应用程序生命周期 ( https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-how -to-specify-port-number-using-parameters),但我不确定如何管理主机名 - 是否有可以包含在 Publish Profile .xml 文件中的主机名相关属性(例如,Cloud.xml) ?
背景:我正在从作为 Windows 服务运行并使用带有 http 和 https 端点的 WebHttpBinding 的自托管本地 WCF 应用程序迁移(使用 T4 配置文件模板来确定主机名和端口号,具体取决于环境)。我正在将此迁移到 Azure ServiceFabric WcfCommunicationListener 应用程序(类似于此处找到的示例:https ://github.com/loekd/ServiceFabric.WcfCalc )......
internal sealed class ServiceFabricWcfService : StatelessService
{
public ServiceFabricWcfService(StatelessServiceContext context) : base(context)
protected override IEnumerable<ServiceInstanceListener>
CreateServiceInstanceListeners()
{
yield return new ServiceInstanceListener(CreateRestListener);
}
private ICommunicationListener CreateRestListener(StatelessServiceContext context)
{
var host = context.NodeContext.IPAddressOrFQDN;
var endpointConfig = context.CodePackageActivationContext.GetEndpoint("ServiceEndpoint");
var port = endpointConfig.Port;
var scheme = endpointConfig.Protocol.ToString();
var uri = string.Format(CultureInfo.InvariantCulture, "{0}://{1}:{2}/webhost/", scheme, host, port);
var listener = new WcfCommunicationListener<IJsonService>(context, new JsonServicePerCall(), new WebHttpBinding(WebHttpSecurityMode.None), new EndpointAddress(uri));
var ep = listener.ServiceHost.Description.Endpoints.Last();
ep.Behaviors.Add(new WebHttpBehavior());
return listener;
}
}
如您所见,主机名是从 StatelessServiceContext 的 NodeContext 获得的——有没有一种好的方法可以将其设置为针对每个环境的不同主机名?我的客户需要能够根据主机名进行 http/https 调用以确定他们连接到哪个环境。谢谢!