2 Stimmen

Verbinden eines alten WSE-Clients mit einem WCF-Dienst... ohne Änderungen am Client

Wir haben einen .NET 2.0 Forms App-Client, der sich mit einem asmx-Webdienst über WSE verbindet.

Wir möchten den Dienst auf WCF aktualisieren und VS 2010 und .NET 4 verwenden, können jedoch bestehende (Unternehmens-)Kunden nicht dazu zwingen, ihre Client-Software/Frameworks usw. zu aktualisieren, so dass die einzige Möglichkeit, den Dienst zu aktualisieren, darin besteht, die Abwärtskompatibilität zu wahren.

Wir können die app.config auf der Kundenseite aktualisieren, aber nicht die ausführbare Datei, d. h. wir können keine neue Dienstreferenz hinzufügen.

Wir haben erfolglos versucht, den WCF-Dienst so zu konfigurieren, dass er den Anruf von der Client-Anwendung akzeptiert, ohne Änderungen am Client vorzunehmen. Ich bezweifle, dass dies überhaupt möglich ist. Natürlich funktioniert es, wenn man im Client einen neuen Verweis hinzufügt, aber wenn man den vorhandenen Verweis verwendet und versucht, ihn mit dem neuen Dienst zu "fälschen", funktioniert das nicht.

Die Konfiguration auf der Seite des Dienstes sieht wie folgt aus:

<bindings>
  <basicHttpBinding>
    <binding name="OnePointOneBinding" bypassProxyOnLocal="false">
      <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
        maxBytesPerRead="4096" maxNameTableCharCount="16384" />
    </binding>
  </basicHttpBinding>
</bindings>
<services>
  <service behaviorConfiguration="ServiceBehaviour" name="xyz.Services.xyzService">
    <endpoint binding="basicHttpBinding" bindingConfiguration="OnePointOneBinding"
      name="BasicBindingSvc" contract="xyz.Services.IxyzService" />
  </service>
</services>

Der Fehler, den wir erhalten, lautet:

Die Nachricht mit der Aktion 'http://webservices.xyz.co.uk/xyz/DoTest' kann beim Empfänger nicht verarbeitet werden, da der ContractFilter beim EndpointDispatcher nicht übereinstimmt. Dies kann entweder auf eine Vertragsfehlanpassung (nicht übereinstimmende Aktionen zwischen Sender und Empfänger) oder eine Bindungs-/Sicherheitsfehlanpassung zwischen Sender und Empfänger zurückzuführen sein. Prüfen Sie, ob Sender und Empfänger denselben Vertrag und dieselbe Bindung haben (einschließlich Sicherheitsanforderungen, z. B. Message, Transport, None).

Jede Anregung wird gerne entgegengenommen

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X