C# 使用Configure方法时如何在代码中设置WCF基址
对于纯基于代码的WCF配置,在.NET 4.0中,可以在创建ServiceHost实例时为服务配置基址(假设采用自托管方案,这适合我的需要)。虽然在.NET 4.5中仍然可以这样做,但MSDN意味着使用新的C# 使用Configure方法时如何在代码中设置WCF基址,c#,.net,wcf,C#,.net,Wcf,对于纯基于代码的WCF配置,在.NET 4.0中,可以在创建ServiceHost实例时为服务配置基址(假设采用自托管方案,这适合我的需要)。虽然在.NET 4.5中仍然可以这样做,但MSDN意味着使用新的Configure()方法是一种更好的做法,因为它使这种基于代码的配置对于自托管场景更容易,对于web托管场景更容易(请参阅) 然而,问题是,尽管您必须在Configure方法(System.ServiceModel.ServiceConfiguration)中使用的对象具有BaseAddre
Configure()
方法是一种更好的做法,因为它使这种基于代码的配置对于自托管场景更容易,对于web托管场景更容易(请参阅)
然而,问题是,尽管您必须在Configure方法(System.ServiceModel.ServiceConfiguration)中使用的对象具有
BaseAddresses
属性,但它是只读的。一定有办法在代码中设置基址吗?我的网络搜索不仅没有发现关于这个特定问题的任何内容,而且根本没有关于这个配置方法的文章或帖子,除了我引用的单个MSDN页面 在反射器中查看BaseAddresses
属性的功能:
// System.ServiceModel.ServiceConfiguration
public ReadOnlyCollection<Uri> BaseAddresses
{
get
{
return this.host.BaseAddresses;
}
}
这意味着
ServiceConfiguration
只是配置ServiceHost
的标准方式的扩展。因此,我建议任何设置基地址的旧方法仍然被视为最佳实践(编程或使用配置)。这是严重的WTF。我现在和你有同样的问题,我对网上没有讨论这个问题感到困惑。
// System.ServiceModel.ServiceConfiguration
internal ServiceConfiguration(ServiceHost host)
{
ServiceConfiguration.CheckArgument<ServiceHost>(host, "host");
this.host = host;
}