Ich habe ein Problem mit einem WCF-Dienst. Ich habe eine Konsolenanwendung und muss den Dienst ohne Verwendung von app.config nutzen, daher musste ich den Endpunkt usw. per Code festlegen. Ich habe einen Dienstverweis auf den SVC, kann aber die app.config nicht verwenden. Hier ist mein Code:
BasicHttpBinding binding = new BasicHttpBinding();
EndpointAddress address = new EndpointAddress("http://localhost:8731/WcfServicio/MiServicio");
MiServicioClient svc = new MiServicioClient(binding, address);
object ob = svc.PaisesObtener();
In der letzten Zeile svc.PaisesObtener()
erhalte ich die Fehlermeldung:
Content Type text/xml; charset=utf-8 was not supported by service
http://localhost:8731/WcfServicio/MiServicio. The client and service bindings may be mismatched.
address="basic" binding="basicHttpBinding"
und den zweitenaddress="secure" binding="basicHttpsBinding"
. Wenn ich jedoch versuche, die Dienstreferenz in Visual Studio hinzuzufügen, wird der Fehler angezeigt .Vergessen Sie nicht, auch den Bindungscode zu überprüfen. Also, wenn Sie geschrieben haben:
BasicHttpBinding binding = new BasicHttpBinding();
Stellen Sie sicher, dass alle Ihre
app.config
Dateien enthalten<endpoint address="..." binding="basicHttpBinding" ...
nicht der
<endpoint address="..." binding="wsHttpBinding" ...
oder so.
quelle
Ich habe dieses Verhalten heute gesehen, als die
<service name="A.B.C.D" behaviorConfiguration="returnFaults"> <endpoint contract="A.B.C.ID" binding="basicHttpBinding" address=""/> </service>
fehlte in der web.config. Die
service.svc
Akte war da und wurde bedient. Es dauerte eine Weile, bis klar wurde, dass das Problem nicht in der Bindungskonfiguration selbst lag ...quelle
Ich habe dieses Problem heute gesehen, als ich versucht habe, einen WCF-Service-Proxy zu erstellen, sowohl mit VS2010 als auch mit svcutil.
Alles was ich mache ist mit
basicHttpBinding
(also kein Problem mitwsHttpBinding
).Zum ersten Mal in meiner Erinnerung stellte mir MSDN die Lösung unter folgendem Link zur Verfügung: Gewusst wie: Veröffentlichen von Metadaten für einen Dienst mithilfe einer Konfigurationsdatei . Die Zeile, die ich ändern musste, befand sich innerhalb des Verhaltenselements innerhalb des MEX-Dienstverhaltenselements in meiner Datei service app.config. Ich habe es geändert von
<serviceMetadata httpGetEnabled="true"/> to <serviceMetadata httpGetEnabled="true" policyVersion="Policy15"/>
und wie durch Zauberei verschwand der Fehler und ich konnte den Service-Proxy erstellen. Beachten Sie, dass es einen entsprechenden MSDN-Eintrag für die Verwendung von Code anstelle einer Konfigurationsdatei gibt: Gewusst wie: Veröffentlichen von Metadaten für einen Dienst mithilfe von Code.
(Natürlich Policy15 - wie hätte ich das möglicherweise übersehen können ???)
Noch ein "Gotcha": Mein Service muss 3 verschiedene Endpunkte verfügbar machen, von denen jeder einen anderen Vertrag unterstützt. Für jeden Proxy, den ich erstellen musste, musste ich die anderen 2 Endpunkte auskommentieren, andernfalls würde sich svcutil beschweren, dass die Basis-URL-Adresse nicht aufgelöst werden konnte.
quelle
Bei der Verwendung der Channel Factory war ich mit einem ähnlichen Problem konfrontiert. Es war tatsächlich auf einen falschen Vertrag zurückzuführen, der im Endpunkt angegeben wurde.
quelle
Für alle, die hier landen, indem sie suchen:
oder eine Teilmenge dieses Fehlers:
Ein ähnlicher Fehler wurde in meinem Fall durch das Erstellen und Ausführen eines Dienstes ohne geeignete Attribute verursacht. Ich habe diese Fehlermeldung erhalten, als ich versucht habe, die Dienstreferenz in meiner Clientanwendung zu aktualisieren. Es wurde behoben, als ich meine benutzerdefinierten Klassen korrekt angewendet
[DataContract]
und[DataMember]
Attribute zugewiesen habe.Dies ist höchstwahrscheinlich der Fall, wenn Ihr Dienst eingerichtet wurde und funktioniert und dann nach der Bearbeitung unterbrochen wurde.
quelle
Ich hatte in letzter Zeit auch das gleiche Problem. Nachdem sie ein paar Stunden gekämpft hatten, kam schließlich eine Lösung heraus
Factory="System.ServiceModel.Activation.WebServiceHostFactory" to your SVC markup file. e.g. ServiceHost Language="C#" Debug="true" Service="QuiznetOnline.Web.UI.WebServices.LogService" Factory="System.ServiceModel.Activation.WebServiceHostFactory"
Jetzt können Sie Ihre Anwendung erfolgreich kompilieren und ausführen.
quelle
Ich betone erneut, dass Namespace, SVC-Name und Vertrag in der Datei web.config korrekt angegeben werden müssen:
<service name="NAMESPACE.SvcFileName"> <endpoint contract="NAMESPACE.IContractName" /> </service>
Beispiel:
<service name="MyNameSpace.FileService"> <endpoint contract="MyNameSpace.IFileService" /> </service>
(Nicht relevante Tags in diesen Beispielen weggelassen)
quelle
In meinem Fall musste ich in der app.config der Client-Anwendung die NachrichtEncoding für Mtom wie folgt angeben :
<?xml version="1.0" encoding="utf-8" ?> <configuration> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" /> </startup> <system.serviceModel> <bindings> <basicHttpBinding> <binding name="IntegrationServiceSoap" messageEncoding="Mtom"/> </basicHttpBinding> </bindings> <client> <endpoint address="http://localhost:29495/IntegrationService.asmx" binding="basicHttpBinding" bindingConfiguration="IntegrationServiceSoap" contract="IntegrationService.IntegrationServiceSoap" name="IntegrationServiceSoap" /> </client> </system.serviceModel> </configuration>
Sowohl mein Client als auch mein Server verwenden basicHttpBinding. Ich hoffe das hilft den anderen :)
quelle
Ich hatte diesen Fehler und alle oben genannten Konfigurationen waren korrekt, aber ich bekam immer noch den Fehler " Die Client- und Service-Bindungen stimmen möglicherweise nicht überein ".
Was meinen Fehler behoben hat, war das Abgleichen der Attributwerte messageEncoding in den folgenden Knoten von Service- und Client-Konfigurationsdateien. Sie waren anders in meinem, Service war Text und Kunde Mtom . Das Problem wurde behoben, indem der Dienst auf Mtom geändert wurde, um ihn an den Kunden anzupassen.
<configuration> <system.serviceModel> <bindings> <basicHttpBinding> <binding name="BasicHttpBinding_IMySevice" ... messageEncoding="Mtom"> ... </binding> </basicHttpBinding> </bindings> </system.serviceModel> </configuration>
quelle