#region 操作Wcf服务端Config文件
public static void UpdateHttpConfig(string configfilename, string serverIPAddress, string serverPort)
{
ExeConfigurationFileMap file = new ExeConfigurationFileMap();
file.ExeConfigFilename = Application.StartupPath +"/"+configfilename;
Configuration config = ConfigurationManager.OpenMappedExeConfiguration(file, ConfigurationUserLevel.None);
ConfigurationSectionGroup sct = config.SectionGroups["system.serviceModel"];
ServiceModelSectionGroup serviceModelSectionGroup = sct as ServiceModelSectionGroup;
ServicesSection serverSection = serviceModelSectionGroup.Services;
foreach (ServiceElement item in serverSection.Services)
{
HostElement host = item.Host;
foreach (BaseAddressElement items in host.BaseAddresses)
{
items.BaseAddress = Regex.Replace(items.BaseAddress.ToString(), @"\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}:\d{1,5}", serverIPAddress + ":" + serverPort);
}
}
config.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection("system.serviceModel");
}
public static string ReadHttpConfig(string configfilename)
{
ExeConfigurationFileMap file = new ExeConfigurationFileMap();
file.ExeConfigFilename = configfilename;
Configuration config = ConfigurationManager.OpenMappedExeConfiguration(file, ConfigurationUserLevel.None);
ConfigurationSectionGroup sct = config.SectionGroups["system.serviceModel"];
ServiceModelSectionGroup serviceModelSectionGroup = sct as ServiceModelSectionGroup;
ServicesSection serverSection = serviceModelSectionGroup.Services;
string str = "";
foreach (ServiceElement item in serverSection.Services)
{
HostElement host = item.Host;
foreach (BaseAddressElement items in host.BaseAddresses)
{
Match m = Regex.Match(items.BaseAddress.ToString(), @"\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}:\d{1,5}");
if (m.Success)
{
str = m.Value;
}
}
}
return str;
}
public static void UpdateNetTcpConfig(string configfilename, string serverIPAddress, string serverPort)
{
ExeConfigurationFileMap file = new ExeConfigurationFileMap();
file.ExeConfigFilename = configfilename;
Configuration config = ConfigurationManager.OpenMappedExeConfiguration(file, ConfigurationUserLevel.None);
ConfigurationSectionGroup sct = config.SectionGroups["system.serviceModel"];
ServiceModelSectionGroup serviceModelSectionGroup = sct as ServiceModelSectionGroup;
ServicesSection serverSection = serviceModelSectionGroup.Services;
foreach (ServiceElement item in serverSection.Services)
{
foreach (ServiceEndpointElement items in item.Endpoints)
{
items.Address = new Uri(Regex.Replace(items.Address.ToString(), @"\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}:\d{1,5}", serverIPAddress + ":" + serverPort));
}
}
config.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection("system.serviceModel");
}
public static string ReadNetTcpConfig(string configfilename)
{
System.Configuration.ExeConfigurationFileMap file = new ExeConfigurationFileMap();
file.ExeConfigFilename = configfilename;
Configuration config = ConfigurationManager.OpenMappedExeConfiguration(file, ConfigurationUserLevel.None);
ConfigurationSectionGroup sct = config.SectionGroups["system.serviceModel"];
ServiceModelSectionGroup serviceModelSectionGroup = sct as ServiceModelSectionGroup;
ServicesSection serverSection = serviceModelSectionGroup.Services;
string str = "";
foreach (ServiceElement item in serverSection.Services)
{
foreach (ServiceEndpointElement items in item.Endpoints)
{
Match m = Regex.Match(items.Address.ToString(), @"\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}:\d{1,5}");
if (m.Success)
{
str = m.Value;
}
}
}
return str;
}
public static void UpdateConfig(string configfilename, string serverIPAddress, string serverPort)
{
ExeConfigurationFileMap file = new ExeConfigurationFileMap();
file.ExeConfigFilename = configfilename;
Configuration config = ConfigurationManager.OpenMappedExeConfiguration(file, ConfigurationUserLevel.None);
ConfigurationSectionGroup sct = config.SectionGroups["system.serviceModel"];
ServiceModelSectionGroup serviceModelSectionGroup = sct as ServiceModelSectionGroup;
ClientSection clientSection = serviceModelSectionGroup.Client;
foreach (ChannelEndpointElement item in clientSection.Endpoints)
{
string pattern = "://.*/";
string address = item.Address.ToString();
string replacement = string.Format("://{0}:{1}/", serverIPAddress, serverPort);
address = Regex.Replace(address, pattern, replacement);
item.Address = new Uri(address);
}
config.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection("system.serviceModel");
}
#endregion