Laden...

WCF: Endpoints per Code

Erstellt von typhos vor 17 Jahren Letzter Beitrag vor 17 Jahren 1.952 Views
T
typhos Themenstarter:in
243 Beiträge seit 2006
vor 17 Jahren
WCF: Endpoints per Code

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...

S
8.746 Beiträge seit 2005
vor 17 Jahren

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

N
4.644 Beiträge seit 2004
vor 17 Jahren
EndpointAddress address = new EndpointAddress("...");
ChannelFactory<Interface> channelFactory = new ChannelFactory<Interface>(deinBinding, address);
T
typhos Themenstarter:in
243 Beiträge seit 2006
vor 17 Jahren

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! 👍

S
8.746 Beiträge seit 2005
vor 17 Jahren

* BUMP wg. Edit *

Aber die Lösung wurde schon genannt.