WCF-so binden Sie mehrere service-Verträge?
First off, werde ich mich entschuldigen, da dies wohl ein Duplikat, aber alles, was ich gelesen habe scheint entweder unvollständig oder verwirrend, denn ich bin sehr neu in WCF.
Ich im Grunde Suche, um die Bereitstellung eines WCF-Diensts in IIS mit 2 Endpunkten zugänglich und wurden im Kreise herum den ganzen Tag 🙁
Ich habe einen WCF service library dll mit der folgenden Struktur
App.config
TestSvc1.cs
ITestSvc1.cs
TestSvc2.cs
ITestSvc2.cs
Dies funktioniert gut in der VS WCF test client und bin jetzt der Bereitstellung auf IIS so habe ich eine WCF-Service-Anwendung und auf die dll. Dieses Projekt hat folgende Struktur
Service1.svc
Web.config
Service1.svc
enthält diese
<%@ ServiceHost Language="C#" Debug="true"
Service="WCFServices.TestServices.ITestSvc1" CodeBehind="Service1.svc.cs" %>
und meine web.config
hat die folgenden
<services>
<service name="WCFServices.TestServices.TestSvc2">
<endpoint
address=""
binding="wsHttpBinding" bindingConfiguration="LargeSizeMessages"
contract="WCFServices.TestServices.ITestSvc2">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint
address="mex"
binding="mexHttpBinding"
contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="http://localhost:8080/wcf2/TestServices/TestSvc2/" />
</baseAddresses>
</host>
</service>
<service name="WCFServices.TestServices.TestSvc1">
<endpoint
address=""
binding="wsHttpBinding" bindingConfiguration="LargeSizeMessages"
contract="WCFServices.TestServices.ITestSvc1"
listenUri="http://localhost:8080/wcf2/service1.svc">
<identity>
<dns value="" />
</identity>
</endpoint>
<endpoint
address=""
binding="wsHttpBinding" bindingConfiguration="LargeSizeMessages"
contract="WCFServices.TestServices.ITestSvc2"
listenUri="http://localhost:8080/wcf2/service1.svc">
<identity>
<dns value="" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="http://localhost:8080/wcf2/TestServices/TestSvc1/" />
</baseAddresses>
</host>
</service>
</services>
Jegliche Hilfe würde sehr geschätzt werden. Wie Sie sehen können ich habe versucht, das hinzufügen eines zusätzlichen Endpunkt in der web.config
aber das funktioniert nicht, ich bekomme eine Fehlermeldung, dass TestSvc2 Anrufe können nicht gefunden werden in TestSvc1 ich glaube, das bezieht sich auf den Eintrag in Service1.svc
Las ich auch über das erstellen einer Klasse, die erbt diese Schnittstellen, aber ich bin nicht sicher, genau, wie es zu implementieren, basierend auf dem, was ich schon oben. Muss ich zum ändern der Service1.svc
?
public interface MultipleSvc : ITestSvc1, ITestSvc2
{
//What exactly do I put here? I have no idea, do I leave it blank? This didn't work for me
}
Jede Hilfe wäre sehr dankbar Jungs vielen Dank 🙂
- Eine kleine Sache, die ich sehe, ist, dass, die Sie angegeben haben unterschiedliche namespaces für den service 1 und 2, nämlich WCFServices.TestServices.ITestSvc1 und WCFServices.TestService.ITestSvc2. Hinweis: die fehlende s in TestServices.ITestSvc2.
- Ja sorry das ist nur ein Tippfehler hier nur zu verdeutlichen, die Dinge besser, krank zu Bearbeiten 🙂
Du musst angemeldet sein, um einen Kommentar abzugeben.
Goldene Regel: eine
.svc
= eine service - (oder genauer: eine service - Umsetzung Klasse)Also, wenn Sie haben zwei separate, unterschiedliche Dienste (in den Klassen
WCFServices.TestServices.TestSvc1
undWCFServices.TestServices.TestSvc2
), dann müssen Sie zwei.svc
Dateien (je eine für jeden Dienst)Was Sie könnte tun haben, ist eine service-Implementierungsklasse, die beiden service-Verträge:
In diesem Fall, eine svc-Datei genug sein (die
.svc
Datei ist pro Klasse Umsetzung und kann als host für mehrere service-Verträge). Aber dann würden Sie brauchen, um Ihre Konfiguration zu - da man wirklich nur über eine service-Klasse (daher: ein<service>
tag) und mehrere Verträge gehostet es:Auch: seit Sie zu sein scheinen, hosting von WCF-Dienst in IIS, gibt es keinen Punkt in der Definition jeder
<baseAddress>
Werte - die "Basis" - Adresse von Ihrem service wird die location (URI), wo der*.svc
Datei lebt.Sie do ' NT müssen zwei svc-Datei. Wählen Sie ServiceReference1.Service1Client oder ServiceReference1.Service2Client.