【问题标题】:How to set programmatically baseAddress for both client and server?如何以编程方式为客户端和服务器设置 baseAddress?
【发布时间】:2013-05-04 07:06:17
【问题描述】:

目前baseAddress 已在服务和客户端的 app.config 文件中修复

服务和客户端的 App.Config

<host>
      <baseAddresses>
        <add baseAddress="http://localhost:8080/service" />
      </baseAddresses>
    </host>

是否可以通过编程方式实现?喜欢

baseAddress = txtbaseAddress.Text;

还有吗?

【问题讨论】:

  • 它对你有用吗? ServiceHost myHost = new ServiceHost(typof(myType), baseAddress)?
  • @AdilMammadov,这个集合已经包含一个带有 http 方案的地址。此集合中的每个方案最多可以有一个地址。如果您的服务托管在 IIS 中,您可以通过将“system.serviceModel/serviceHostingEnvironment/multipleSiteBindingsEnabled”设置为 true 或指定“system.serviceModel/serviceHostingEnvironment/baseAddressPrefixFilters”来解决问题。

标签: c# winforms wcf


【解决方案1】:

您不能使用 ServiceHost 更新基地址,因为它是只读的。您必须将一组 baseAddress 传递给 ServiceHost 构造函数,否则您必须使用配置文件。

请参考以下链接

  1. MSDN

  2. MSDN Blog

<system.serviceModel>
  <serviceHostingEnvironment>
     <baseAddressPrefixFilters>
        <add prefix=”net.tcp://test1.fabrikam.com:8000”/>
        <add prefix=”http://test2.fabrikam.com:9000”/>
    </baseAddressPrefixFilters>
  </serviceHostingEnvironment>
</system.serviceModel>

【讨论】:

  • 这里没有以编程方式执行此操作的示例。
【解决方案2】:

虽然这有点晚了,但它可能对其他人有用。

使用基于 ServiceHostFactoryBase 的自定义服务主机,如下所示: Service Host Factory Base

实现示例:Implementing Custom Service Host

此外,ServiceHostBase 类是抽象的,可用于创建自定义 ServiceHost。

【讨论】:

  • 请注意,link-only answers are discouraged,SO 答案应该是寻找解决方案的终点(与另一个中途停留的参考相比,它往往会随着时间的推移变得陈旧)。请考虑在此处添加独立的概要,并保留链接作为参考。
  • 实现示例的代码对我来说似乎有问题。为什么将constructorString 分配给从未使用过的局部变量。 constructorString 有什么用途?
猜你喜欢
  • 1970-01-01
  • 2012-05-26
  • 2012-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-11
  • 2011-02-25
相关资源
最近更新 更多