WCF BasicHttpBinding wsHttpBinding und im gleichen WCF-Dienstanwendung
Habe ich gesagt, dass wsHttpBinding unterstützt nicht die älteren Kunden, die immer noch auf der älteren version von SOAP. Ich möchte hinzufügen, ein BasicHttpBinding Endpunkt im selben WCF-Dienst-Anwendung, so dass clients kann entweder den Endpunkt, je nach Technologie, die Sie ausgeführt werden. Ich bin verwirrt, was die zu verwendende Adresse für jeden von Ihnen. Die Standard-wsHttpBinding hat keine Adresse gesetzt. Was sollte die Adresse sein, für BasicHttpBinding Endpunkt? Sollte nicht die Adresse für die wsHttpBinding werden (für mein Beispiel) http://localhost/WcfService1/Service1.svc ?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es gibt zwei Dinge, die Sie benötigen, zu prüfen, hier:
wenn Ihr hosting in IIS (oder WAR Teil von IIS7), können Sie nicht eine Basis - Adresse Basis-Adresse für den service wird das virtuelle Verzeichnis, in dem die
MyService.svc
Datei lebt. Sie können noch relative Adressen, obwohlwenn Sie selbst hosten, Sie werden in der Regel hinzufügen base-Adressen in Ihrer Konfiguration, so können Sie ersparen sich mit Zauber für die gesamte Adresse die ganze Zeit (aber Sie können - wenn Sie dies wünschen).
Also, wenn Sie Ihre
MyService.svc
in einem virtuellen Verzeichnis namensMyApp
auf Ihrelocalhost
Maschine, und verwenden Sie dann diese config:dann Ihre "old-style" basicHttp-service erreichbar unter:
und Ihre neue wsHttp driven service erreichbar unter:
Können Sie benennen, relative Adressen (alles nach
.../MyApp/MyService.svc
), was Sie wollen - so stellen Sie sicher, Sie sind voneinander Verschieden.Hosting in IIS --> Lage (virtuelles Verzeichnis) deiner *.svc-Datei wird Ihre base-Adresse.
Wenn du selbst Gastgeber Ihren Dienst in einer Konsolenanwendung oder einer Windows-NT-Service, und Sie erhalten Ihre Basis-Adressen selbst:
Nun in diesem Fall, Ihre "old-style" basicHttp-service erreichbar unter:
und Ihre neue wsHttp driven service erreichbar unter:
Definieren Sie die Basisadresse für jeden der Transporte, beispielsweise für http://, eine für das Netz.tcp://und so weiter.
Und natürlich, wenn Sie wirklich müssen, können Sie auch definieren Sie Ihre komplette Adresse in Ihrem
<endpoint>
element für jedes der service-Endpunkte - dies gibt Ihnen die totale Flexibilität (funktioniert aber nur in self-hosting-Szenarien).Marc
In der WCF-Sie haben eine Basis-Adresse und einer enpoint-Adresse, in Ihrem Fall kann man etwas wie das hier tun:
Hinweis: Sie müssen zusätzliche Arbeit für die "basicHttpBinding" Endpunkt für die Arbeit mit älteren (asmx) Kunden
http://msdn.microsoft.com/en-us/library/ms751433.aspx