Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
按环境变量动态指定WCF服务端点_Wcf_Mvvm_Configuration - Fatal编程技术网

按环境变量动态指定WCF服务端点

按环境变量动态指定WCF服务端点,wcf,mvvm,configuration,Wcf,Mvvm,Configuration,我正在创建一个MVVM客户端应用程序,它使用WCF服务在数据库中执行CRUD操作。我还有4个部署环境,它们使用相同的服务,但位于4个不同的服务器上。 这里有一些伪代码可以更好地解释: 在App.Config中: <appSettings> <add key="Local.Server.Service" value="Local.Service" /> <add key="Development.Server.Service" value="Development.

我正在创建一个MVVM客户端应用程序,它使用WCF服务在数据库中执行CRUD操作。我还有4个部署环境,它们使用相同的服务,但位于4个不同的服务器上。 这里有一些伪代码可以更好地解释:

在App.Config中:

 <appSettings>
<add key="Local.Server.Service" value="Local.Service" />
<add key="Development.Server.Service" value="Development.Service" />
<add key="Test.Server.Service" value="Test.Service" />
<add key="Pre-Prod.Server.Service" value="Pre-Prod.Service" />
<add key="Production.Server.Service" value="Production.Service" />

</appSettings>
   <system.serviceModel>
<bindings>
  <basicHttpBinding>
    <binding name="BasicHttpBinding_IService" maxBufferPoolSize="2147483647" 
   maxBufferSize="2147483647" maxReceivedMessageSize="2147483647">
      <readerQuotas maxDepth="2147483647" 
    maxStringContentLength="2147483647" maxArrayLength="2147483647" 
      maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
      <security mode="None" />
    </binding>
  </basicHttpBinding>
</bindings>
<services>
     <service name="Local.Service">
        <endpoint address="Local.address" 
  bindingConfiguration="BasicHttpBinding_IService"/>
     </service>
     <service name="Dev.Service">
        <endpoint address="Dev.address" 
  bindingConfiguration="BasicHttpBinding_IService"/>
     </service>
     <service name="Test.Service">
        <endpoint address="Test.address" 
bindingConfiguration="BasicHttpBinding_IService"/>
     </service>
     <service name="Prod.Service">
        <endpoint address="Prod.address" 
bindingConfiguration="BasicHttpBinding_IService"/>
     </service>

    </services>
从这里,我可以调用服务名称的GetServiceUri,但我不知道如何获取服务的端点地址


任何帮助都将不胜感激

我最终更改了app.config文件,将不同的端点包含在单个客户端中,而不是单个服务中,并调整了绑定配置,如下所示:

<system.serviceModel>
<bindings>
  <basicHttpBinding>
    <binding name="BasicHttpBinding_IService" maxBufferPoolSize="2147483647"
      maxReceivedMessageSize="2147483647" />
    <binding name="BasicHttpBinding_IService" />
  </basicHttpBinding>
</bindings>
<client>
  <endpoint address="Local.address"
    binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IService"
    contract="ServiceReference.IService"
    name="Local.BasicHttpBinding_IService" />
  <endpoint address="Dev.address"
    binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IService"
    contract="ServiceReference.IService"
    name="Dev.BasicHttpBinding_IService" />
  <endpoint address="Test.address"
    binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IService"
    contract="ServiceReference.IService"
    name="Test.BasicHttpBinding_IService" />
  <endpoint address="Prod.address"
    binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IService"
    contract="ServiceReference.IService"
    name="BasicHttpBinding_IService" />
</client>
</system.serviceModel>

<system.serviceModel>
<bindings>
  <basicHttpBinding>
    <binding name="BasicHttpBinding_IService" maxBufferPoolSize="2147483647"
      maxReceivedMessageSize="2147483647" />
    <binding name="BasicHttpBinding_IService" />
  </basicHttpBinding>
</bindings>
<client>
  <endpoint address="Local.address"
    binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IService"
    contract="ServiceReference.IService"
    name="Local.BasicHttpBinding_IService" />
  <endpoint address="Dev.address"
    binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IService"
    contract="ServiceReference.IService"
    name="Dev.BasicHttpBinding_IService" />
  <endpoint address="Test.address"
    binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IService"
    contract="ServiceReference.IService"
    name="Test.BasicHttpBinding_IService" />
  <endpoint address="Prod.address"
    binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IService"
    contract="ServiceReference.IService"
    name="BasicHttpBinding_IService" />
</client>
</system.serviceModel>