C# 如何以编程方式设置客户端和服务器的基址?

C# 如何以编程方式设置客户端和服务器的基址?,c#,winforms,wcf,C#,Winforms,Wcf,当前,baseAddress在app.config文件中固定为服务和客户端 服务和客户端的App.Config <host> <baseAddresses> <add baseAddress="http://localhost:8080/service" /> </baseAddresses> </host> 或任何?您不能使用ServiceHost更新基址,因为它是只读的。您必须将ba

当前,
baseAddress
在app.config文件中固定为服务和客户端

服务和客户端的App.Config

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

或任何?

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

请参考以下链接


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

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

    实施示例:


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

    它是否适用于您?ServiceHost myHost=新的ServiceHost(typof(myType),baseAddress)?@adilmamamadov,此集合已包含具有方案http的地址。此集合中每个方案最多只能有一个地址。如果您的服务托管在IIS中,您可以通过将“system.serviceModel/serviceHostingEnvironment/multipleSiteBindingsEnabled”设置为true或指定“system.serviceModel/serviceHostingEnvironment/baseAddressPrefixFilters”来解决问题。请注意,答案应该是搜索解决方案的终点(与参考文献的另一个中途停留相比,随着时间的推移,参考文献往往会变得陈旧)请考虑在这里添加一个独立的概要,将链接作为引用。实现示例的代码对我来说似乎很麻烦。为什么它将代码< >构造字符串< /代码>分配给一个从未使用过的局部变量。
    baseAddress = txtbaseAddress.Text;
    
    <system.serviceModel>
      <serviceHostingEnvironment>
         <baseAddressPrefixFilters>
            <add prefix=”net.tcp://test1.fabrikam.com:8000”/>
            <add prefix=”http://test2.fabrikam.com:9000”/>
        </baseAddressPrefixFilters>
      </serviceHostingEnvironment>
    </system.serviceModel>