diff --git a/ArchiSteamFarm/GlobalConfig.cs b/ArchiSteamFarm/GlobalConfig.cs index ae589eeea..b834fa447 100644 --- a/ArchiSteamFarm/GlobalConfig.cs +++ b/ArchiSteamFarm/GlobalConfig.cs @@ -105,7 +105,10 @@ namespace ArchiSteamFarm { [JsonProperty(Required = Required.DisallowNull)] internal readonly ushort WCFPort = DefaultWCFPort; - [JsonProperty(Required = Required.DisallowNull)] + [JsonProperty(Required = Required.DisallowNull)] + internal readonly bool WCFPublishMetadata = false; + + [JsonProperty(Required = Required.DisallowNull)] internal readonly bool Statistics = true; [JsonProperty(Required = Required.DisallowNull)] diff --git a/ArchiSteamFarm/WCF.cs b/ArchiSteamFarm/WCF.cs index 65974f808..dec15fb76 100644 --- a/ArchiSteamFarm/WCF.cs +++ b/ArchiSteamFarm/WCF.cs @@ -26,6 +26,7 @@ using System; using System.Linq; using System.ServiceModel; using System.ServiceModel.Channels; +using System.ServiceModel.Description; namespace ArchiSteamFarm { [ServiceContract] @@ -87,8 +88,17 @@ namespace ArchiSteamFarm { } Logging.LogGenericInfo("Starting WCF server..."); - ServiceHost = new ServiceHost(typeof(WCF)); - ServiceHost.AddServiceEndpoint(typeof(IWCF), new BasicHttpBinding(), URL); + ServiceHost = new ServiceHost(typeof(WCF), new Uri(URL)); + if (Program.GlobalConfig.WCFPublishMetadata) + { + ServiceHost.Description.Behaviors.Add(new ServiceMetadataBehavior + { + HttpGetEnabled = true + }); + ServiceHost.AddServiceEndpoint(ServiceMetadataBehavior.MexContractName, + MetadataExchangeBindings.CreateMexHttpBinding(), "mex"); + } + ServiceHost.AddServiceEndpoint(typeof(IWCF), new BasicHttpBinding(), string.Empty); try { ServiceHost.Open();