微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

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

解决方法

查看反射器BaseAddresses属性的作用:

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

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

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐