2009-04-17 7 views
2

Ich erstelle einen WCF-Dienst. Wenn ich den Dienst als "Webreferenz" zu meiner Website hinzufüge (ich benutze dazu die URL: http://localhost/myservice.svc?wsdl) und dann die vom Dienst offen gelegten Webmethoden aufruft, bekomme ich eine Ausnahme "Operation hat abgelaufen". Wenn ich jedoch den Dienst als "Service-Referenz" zur Site hinzufüge, funktionieren die Anrufe einwandfrei.So stellen Sie einen WCF-Dienst verschiedenen Clients zur Verfügung

Der iam Grund Zugabe als eine Web-Referenz, ich möchte den WCF-Dienst für alle Kunden wie Java, PHP belichten .....

ich auf den Artikel ausgesehen haben in „http://blogs.msdn.com/juveriak/archive/2008/03/18/wcf-proxy-that-works-with-different-clients.aspx“, aber Ich habe nicht versucht, die WSDL zu einem typisierten Proxy zu konvertieren, wie in diesem Artikel vorgeschlagen.

Irgendwelche Ideen, warum ich eine Auszeit Fehler bekomme, wenn Sie es als Web-Referenz verwenden?

Antwort

0

Wahrscheinlich verwenden Sie WsHttpBinding anstatt . .NET 2.0-Webdienste können keinen WsHttpBinding-Dienst verwenden.

Das Problem ist eines des Protokolls. Webdienstprotokolle ändern sich ständig und fügen Sicherheit, Verbundidentität usw. hinzu. Wenn sie sich ändern, können ältere Technologien nicht mit den neueren Protokollen kommunizieren.

Glücklicherweise können Sie mit WCF mehrere Protokolle in einem einzigen Dienst verwenden - richten Sie für jedes Protokoll, das Sie verwenden möchten, separate Endpunkte ein. Seien Sie jedoch vorsichtig, da einige sicherer sind als andere.

In Bezug auf Versionierung ist die MessageVersion Klasse ein guter Ausgangspunkt.

Edit: ich erwähnt habe, sollte, dass Sie MessageVersion als Teil einer benutzerdefinierten TextMessageEncodingBindingElement Bindung, wie so verwenden müssen:

<bindings> 
    <customBinding> 
     <binding name="MyBinding"> 
      <textMessageEncoding messageVersion="Soap11WSAddressing10"/> 
      <httpTransport/> 
     </binding> 
    </customBinding> 
</bindings> 
+0

Wie ist MessageVersion eine Möglichkeit, Version Nachrichten? Dies sagt Ihnen, ob es SOAP 1.1 oder SOAP 1.2 ist - es gibt Ihnen nicht die Möglichkeit, "das ist mein Service v1" oder "mein Service v2" zu spezifizieren. –

+1

Ich habe einen Abschnitt "BasicHttpBinding" zum Dienst "wcf" hinzugefügt. – Developer

+0

@Nick: lass mich wissen, wie es geht – Randolpho

Verwandte Themen