按环境变量动态指定WCF服务端点
我正在创建一个MVVM客户端应用程序,它使用WCF服务在数据库中执行CRUD操作。我还有4个部署环境,它们使用相同的服务,但位于4个不同的服务器上。 这里有一些伪代码可以更好地解释: 在App.Config中:按环境变量动态指定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.
<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>