c# – 在代码中覆盖配置文件WCF Base Addresses
我有一个WCF
Windows服务,在服务的配置文件中指定了端点.
<baseAddresses> <add baseAddress="net.tcp://localhost:9000/MyEndpoint"/> </baseAddresses> 一切正常.但是,在某些情况下,端口9000可能已在使用中,导致ServiceHost在Open()上失效. 有没有办法以编程方式执行此操作? 在构造ServiceHost之后,我可以看到BaseAddresses属性,该属性返回从配置文件中获取的Uri列表.但是,这是一个只读集合,因此不能用于更改默认值. 如果我在ServiceHost构造函数中指定替换Uri,我得到
如果我创建一个CustomServiceHost并尝试设置替换基地址,我会得到相同的错误. class CustomHost : ServiceHost { public CustomHost(Type serviceType) : base (serviceType) { } protected override void ApplyConfiguration() { base.ApplyConfiguration(); this.AddBaseAddress(new Uri("net.tcp://localhost:9010/MyEndpoint")); } } 我知道,如果我将配置文件基地址留空并将基地址传递给ServiceHost构造函数,那么这样可以正常工作 – 即我可以指定新的基数.但是,我想使用配置文件来指定默认值(而不是硬编码). 解决方法
看看我发布的这个例子.它有一个完全通过代码配置的WCF服务的完整工作示例.您应该能够使用Environment.GetEnvironmentVariable获取端口号并将其传递给ServiceHost的构造函数:
Possible to have same contract,same binding,same address,but different ports? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |