Removal of WCF APIs with a configurationName
parameter
The WCF APIs that accept either a configurationName
parameter or an endpointConfigurationName
parameter have been removed in WCF 8. These APIs were previously used in .NET Framework to load client configuration parameters such as the Binding
configuration and the EndpointAddress
details.
Version introduced
WCF Client 8.0 GA
Previous behavior
The removed APIs were previously suppressed from IntelliSense suggestions, however, projects that used them compiled successfully. Using any of the removed APIs resulted in a PlatformNotSupportedException at run time.
New behavior
The affected APIs no longer exist. If you upgrade to WCF 8 and recompile your project, it will fail.
Type of breaking change
This change can affect source compatibility.
Reason for change
The affected APIs were never implemented on .NET, and any calls to these APIs previously resulted in a run-time exception. Thus the decision was made to remove them completely.
Recommended action
Remove any usage of the affected APIs.
If you're using a WCF client generated by the svcutil
utility from the .NET Framework SDK, the generated client will have constructors that call base class constructors that have been removed. The base class will be either ClientBase<TChannel> or DuplexClientBase<TChannel>. The generated constructors were unusable on .NET as they resulted in a PlatformNotSupportedException
being thrown.
- If you're multi-targeting .NET Framework and .NET and are still using these generated constructors on .NET Framework, you'll need to conditionally compile their usage.
- If you're not using these constructors, you can delete them from the generated code. Alternatively, consider regenerating the client using
dotnet-svcutil
.
Affected APIs
- NetHttpBinding(String)
- NetTcpBinding(String)
- System.ServiceModel.ChannelFactory.ApplyConfiguration(String)
- System.ServiceModel.ChannelFactory.InitializeEndpoint(String, EndpointAddress)
- ChannelFactory<TChannel>(String)
- ChannelFactory<TChannel>(String, EndpointAddress)
- DuplexChannelFactory<TChannel>(InstanceContext, String)
- DuplexChannelFactory<TChannel>(InstanceContext, String, EndpointAddress)
- DuplexClientBase<TChannel>(InstanceContext, String)
- DuplexClientBase<TChannel>(InstanceContext, String, EndpointAddress)
- DuplexClientBase<TChannel>(InstanceContext, String, String)