使用Configure方法时如何在代码中设置WCF基址

时间:2015-08-05 18:01:21

标签: c# .net wcf

对于基于代码的纯WCF配置,在.NET 4.0中,可以在创建ServiceHost实例时为服务配置基址(假设自托管方案适合我的需要)。虽然人们仍然可以使用.NET 4.5做到这一点,但MSDN暗示使用新的Configure()方法是一种更好的做法,因为它使基于代码的配置对于自托管更容易,并且对于Web托管方案更容易(见Configuring WCF Services in Code)。

但问题是,虽然您必须在Configure方法(System.ServiceModel.ServiceConfiguration)中使用的对象具有BaseAddresses属性,但它是只读的。当然必须有一种方法设置代码中的基地址?我的网络搜索不仅发现了这个特定的问题,而且根本没有关于这个Configure方法的文章或帖子,除了我引用的单个MSDN页面!

1 个答案:

答案 0 :(得分:1)

查看BaseAddresses属性的反射器:

// System.ServiceModel.ServiceConfiguration
public ReadOnlyCollection<Uri> BaseAddresses
{
    get
    {
        return this.host.BaseAddresses;
    }
}

我无法在使用ServiceHost.BaseAddresses的ServiceConfiguration中找到任何其他方法

ServiceConfiguration的实例是使用ServiceHost实例创建的:

// System.ServiceModel.ServiceConfiguration
internal ServiceConfiguration(ServiceHost host)
{
    ServiceConfiguration.CheckArgument<ServiceHost>(host, "host");
    this.host = host;
}

这意味着ServiceConfiguration只是标准配置方式ServiceHost的扩展。所以我建议任何旧的设置方式BaseAddress仍然被认为是最佳实践(程序化或使用配置)。