[C#] bind self hosted wcf service to url

#1
Hallo,
ich habe einen WCF Service und will diesen in einer Application (Forms) laufen lassen.
Ich bin jetzt so wit, das ich ihn über localhot:8080/Service erreichen kann.
Nun will ich den Service aber an eine anddere URL binden als an dem Localhost.
soetwas wie "http://wcf/Service1" funktioniert das?
und der service soll nur im localen netz verfügbar sein, aber ich glaube das ist er auch standartmäßig.
Meine Bind funktion:
PHP:
  Uri baseAddress = new Uri("http://localhost:8080/Service1/");

            BasicHttpBinding binding = new BasicHttpBinding();

            myServiceHost = new ServiceHost(typeof(WCFService), baseAddress);
            myServiceHost.AddServiceEndpoint(typeof(I_ServiceContract), binding, baseAddress);

            myServiceHost.Open();
und so hatte ich es mir vorgestellt:

PHP:
  Uri baseAddress = new Uri("http://wcf/Service1/");

            BasicHttpBinding binding = new BasicHttpBinding();

            myServiceHost = new ServiceHost(typeof(WCFService), baseAddress);
            myServiceHost.AddServiceEndpoint(typeof(I_ServiceContract), binding, baseAddress);

            myServiceHost.Open();
Kann das C#oder geht das überhaupt nicht?

Danke im Vorraus
 

ksk

Erfahrenes Mitglied
#2
... sollte schon möglich sein.
Was mir bei der URI ("http://wcf/Service1") auffält ist das nicht auf den Service verwiesen wird ("http://wcf/Service1/Service1.svc").
Falls "Service1" doch der Servicename ist dann gehört die Extension dazu.
Keine Ahnung ob du den unteren Code benötigen wirst aber du kannst beim Binding
sicherheitshalber noch die MaxReceivedMessageSize und maxBuffersize auf "2147483647" und
den Binding-Security auf Transport stellen.
Code:
  binding.MaxBufferSize = 2147483647;
  binding.MaxReceivedMessageSize = 2147483647;

  BasicHttpSecurity bhtts = new BasicHttpSecurity();
  bhtts.Transport = new HttpTransportSecurity();
  binding.Security = bhtts;
Zusätzlich muss am IIS Server auch Einstellung getroffen werden.
WCF auf IIS 6 ist sehr schwer einzurichten auf IIS 7 jedoch einfach.

Du brauchst einen Application Pool mit folgenden Einstellungen
v4.0,
Managed Pipline Mode: Integrated,
Identity: ApplicationPoolIdentity

Wenns nur intern verwendet werden soll dann Anonymous deaktivieren und Windows authentication aktivieren.
Und ganz wichtig die Berechtigung auf File-Ebene.
Im Verzeichnis wo der Service bzw. das Projekt liegt muss der IIS_User oder ähnl. berechtigt sein (Lesen/Ausführen).
Des Weiteren muss der Service auf dem IIS Registriert werden. Siehe
http://msdn.microsoft.com/en-us/library/ms732012(v=vs.110).aspx
http://msdn.microsoft.com/en-us/library/aa751792(v=vs.110).aspx
auf Deutsch
http://msdn.microsoft.com/de-de/library/aa751792(v=vs.110).aspx

Ich glaube wenn diese Schritte erledigt sind dann sollte dir nichts im Wege stehen.
Hoffe das hilft dir weiter und gib bescheid ob das geklappt hat.

Lg
ksk
 

Neue Beiträge