Có 2 tùy chọn.
Tùy chọn 1. Làm việc với các kênh.
Nếu bạn đang làm việc với các kênh trực tiếp, .NET 4.0 và .NET 4.5 có ConfigurationChannelFactory. Ví dụ trên MSDN trông như thế này:
ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap();
fileMap.ExeConfigFilename = "Test.config";
Configuration newConfiguration = ConfigurationManager.OpenMappedExeConfiguration(
fileMap,
ConfigurationUserLevel.None);
ConfigurationChannelFactory<ICalculatorChannel> factory1 =
new ConfigurationChannelFactory<ICalculatorChannel>(
"endpoint1",
newConfiguration,
new EndpointAddress("http://localhost:8000/servicemodelsamples/service"));
ICalculatorChannel client1 = factory1.CreateChannel();
Như đã chỉ ra bởi Langdon, bạn có thể sử dụng địa chỉ endpoint từ tập tin cấu hình bằng cách đơn giản đi qua trong null, như thế này:
var factory1 = new ConfigurationChannelFactory<ICalculatorChannel>(
"endpoint1",
newConfiguration,
null);
ICalculatorChannel client1 = factory1.CreateChannel();
này được thảo luận trong MSDN documentation.
Tùy chọn 2. Làm việc với proxy.
Nếu bạn đang làm việc với các proxy được tạo mã, bạn có thể đọc tệp cấu hình và tải ServiceModelSectionGroup. Có nhiều hơn một chút công việc liên quan hơn chỉ đơn giản bằng cách sử dụng ConfigurationChannelFactory
nhưng ít nhất bạn có thể tiếp tục sử dụng proxy được tạo ra (mà dưới mui xe sử dụng một ChannelFactory
và quản lý IChannelFactory
cho bạn.
Pablo Cibraro cho thấy một ví dụ tốt đẹp của này đây : Getting WCF Bindings and Behaviors from any config source
Philippe - Tôi đã tìm thấy Option 1 khá dễ sử dụng, nhưng bạn có thể tư vấn thêm về Option2 hay không. Tất cả những gì tôi tìm thấy là số lượng không hỗ trợ ed @ generator @ đang sử dụng Reflection và không bao gồm 100% tùy chọn cấu hình có thể có. –
@GeorgySmirnov, bạn có thấy liên kết tới http://weblogs.asp.net/cibrax/archive/2010/05/11/getting-wcf-bindings-and-behaviors-from-any-config-source.aspx trong Lựa chọn 2? Nó cho thấy một ví dụ rất tốt. – Philippe