Loading System.ServiceModel configuration section using ConfigurationManager


Question

Using C# .NET 3.5 and WCF, I'm trying to write out some of the WCF configuration in a client application (the name of the server the client is connecting to).

The obvious way is to use ConfigurationManager to load the configuration section and write out the data I need.

var serviceModelSection = ConfigurationManager.GetSection("system.serviceModel");

Appears to always return null.

var serviceModelSection = ConfigurationManager.GetSection("appSettings");

Works perfectly.

The configuration section is present in the App.config but for some reason ConfigurationManager refuses to load the system.ServiceModel section.

I want to avoid manually loading the xxx.exe.config file and using XPath but if I have to resort to that I will. Just seems like a bit of a hack.

Any suggestions?

1
60
10/24/2013 10:46:46 AM

Accepted Answer

The <system.serviceModel> element is for a configuration section group, not a section. You'll need to use System.ServiceModel.Configuration.ServiceModelSectionGroup.GetSectionGroup() to get the whole group.

47
4/2/2014 6:18:11 AM

http://mostlytech.blogspot.com/2007/11/programmatically-enumerate-wcf.html

// Automagically find all client endpoints defined in app.config
ClientSection clientSection = 
    ConfigurationManager.GetSection("system.serviceModel/client") as ClientSection;

ChannelEndpointElementCollection endpointCollection =
    clientSection.ElementInformation.Properties[string.Empty].Value as     ChannelEndpointElementCollection;
List<string> endpointNames = new List<string>();
foreach (ChannelEndpointElement endpointElement in endpointCollection)
{
    endpointNames.Add(endpointElement.Name);
}
// use endpointNames somehow ...

Appears to work well.


Licensed under: CC-BY-SA with attribution
Not affiliated with: Stack Overflow
Icon