Hi,
ich habe mal eine Frage zu WCF. Und zwar kann man auf der Client-Seite einen bereitgestellten WCF-Service einfach dadurch nutzen, dass man einen Endpoint in der config-Datei definiert und per Code den Service mit dem definierten Endpoint abonniert:
config:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.serviceModel>
<client>
<endpoint address="net.tcp://localhost:8088/Service"
binding="netTcpBinding"
contract="ServiceContract-Interface"
name="Servicename" />
</client>
</system.serviceModel>
</configuration>
cs-Code zum erzeugen des Remote-Objekts:
ChannelFactory<ServiceContract-Interface> factory = new ChannelFactory<ServiceContract-Interface>("Servicename");
ServiceContract-Interface proxy = factory.CreateChannel();
Meine Frage:
Kann man das denn auch komplett per (c#-)Code machen, also ohne config? Ich weiß, dass es dann schwerer zu ändern ist, aber es würde mich halt interessieren...
Kommt darauf an:
Läßt du dir einen Proxy codegenerieren, hast du ein URL-Property.
Gehst du über die Channel-Factory (ohne Proxy), dann musst du den Service-Endpunkt bei der Erzeugung der ChannelFactory angeben:
http://clariusconsulting.net/blogs/pga/archive/2006/08/07/639.aspx
EndpointAddress address = new EndpointAddress("...");
ChannelFactory<Interface> channelFactory = new ChannelFactory<Interface>(deinBinding, address);
Hmm, Danke. Aber ich glaub nicht, dass das geht. proxy ist doch vom Typ meines Interfaces (Servicecontract). Da kann ich doch die Url nicht setzen!?
edit:
Danke Noodles! Das probiere ich gleich mal aus! 👍
* BUMP wg. Edit *
Aber die Lösung wurde schon genannt.