我们正在开发一个 Silverlight 应用程序,我们在其中使用调用 WCF Web 服务的第三方组件。不幸的是,这个组件不允许我们指定端点配置名称;相反,它使用硬编码的端点名称,例如TheEndpoint
. 这是有问题的,因为我们需要能够根据 C# 代码检测到的某些条件在不同的端点配置之间进行选择。我假设 WCF 维护在 App.config 中定义的那些端点的某种存储库,因为它们可以在您创建新的客户端通道时使用 - 是否可以将新端点插入此存储库?我希望能够做这样的事情:
bool useSSL = ...;
var mode = useSSL ? BasicHttpSecurityMode.Transport : BasicHttpSecurityMode.None;
var binding = new BasicHttpBinding(mode) {Name = "TheEndpoint"};
var address = (useSSL ? "https" : "http") + "://example.com/service.svc";
MagicalWcfEndpointRepository.AddClientEndpoint(
typeof(ITheInterface), binding, address);
每当我为此进行谷歌搜索时,我都会找到很多关于如何动态创建端点的提示,但它们都假设您自己创建了客户端通道。这不是这里的情况;该组件有自己的客户端代理,它直接实例化,我们无法注入另一个通道或通道工厂。另外,我知道可以使用配置转换来更改 App.config 的内容,但这会导致应用程序的每个单独安装都绑定到一个特定的端点。我们希望每个应用程序能够在启动时在不同的端点之间进行选择。这可能吗?