对于基于代码的纯WCF配置,在.NET 4.0中,可以在创建ServiceHost实例时为服务配置基址(假设自托管方案适合我的需要)。虽然人们仍然可以使用.NET 4.5做到这一点,但MSDN暗示使用新的Configure()
方法是一种更好的做法,因为它使基于代码的配置对于自托管更容易,并且对于Web托管方案更容易(见Configuring WCF Services in Code)。
但问题是,虽然您必须在Configure方法(System.ServiceModel.ServiceConfiguration)中使用的对象具有BaseAddresses
属性,但它是只读的。当然必须有一种方法设置代码中的基地址?我的网络搜索不仅发现了这个特定的问题,而且根本没有关于这个Configure方法的文章或帖子,除了我引用的单个MSDN页面!
答案 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
仍然被认为是最佳实践(程序化或使用配置)。