Je voudrais stocker les configurations de point de terminaison dans le fichier .config, mais être capable de modifier l'adresse de base au moment de l'exécution. EG: ce sont mes définitions en app.config point final:Récupère/modifie l'adresse du client Configuration du point de terminaison
<endpoint address="net.tcp://BASEURI:1001/FooService/"
binding="netTcpBinding" bindingConfiguration="NetTcpBinding_Common"
contract="ServiceContracts.MyService"
name="FooService" />
<endpoint address="net.tcp://BASEURI:1002/BarService/"
binding="netTcpBinding" bindingConfiguration="NetTcpBinding_Special"
contract="ServiceContracts.MyService"
name="BarService" />
Chaque service utilise le même marché (ServiceContracts.MyService
), mais vivent sur un autre port, chemin différent, et parfois une configuration de liaison différente. Je veux être en mesure d'extraire par programme l'adresse "net.tcp: // BASEURI/FooService /", remplacer "BASEURI" par l'adresse du serveur, puis passer cela comme adresse à la DuplexChannelFactory lorsque le client la connexion est créée. EG:
string ServiceToUse = "FooService";
var endpointConfig = SomeFunctionThatGetsTheConfig(ServiceToUse);
string trueAddress = endpointConfig.Address.Replace("BASEURI", "192.168.0.1");
DuplexChannelFactory<FooService> client =
new DuplexChannelFactory<FooService>(ServiceToUse, new EndpointAddress(trueAddress));
Je sais que les paramètres clients ne prennent pas en charge la <baseaddress> fonction des paramètres de service, mais mon but est de travailler autour de cette certaine façon pour que je n'ai pas savoir ce que le reste de l'URI ou la liaison est.
Remarque: Je n'utilise pas de classe Proxy, j'utilise directement la fonction DuplexChannelFactory.
Parfait, travaillé la première fois. Merci beaucoup. Edit: WCF semble convertir la partie serveur ToLower, vous devez donc faire correspondre "baseuri" plutôt que "BASEURI". Sinon, cela fonctionne bien. –