动态,应用程序范围内替换WCF客户端端点

时间:2013-04-09 15:10:47

标签: wcf silverlight

我们正在开发一个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的内容,但这会导致应用程序的每个单独安装都绑定到一个特定端点。我们希望每个应用程序能够在启动时在不同的端点之间进行选择。这可能吗?

0 个答案:

没有答案