对于基于代码的纯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] 举报,一经查实,本站将立刻删除。