2016-10-30 3 views
0

Ich bin neu in WPF und WCF C# -Anwendung Entwicklung und steckte in die Aktualisierung der Klasse, wo auf den WCF-Service verwiesen wird. Zum Beispiel hat Service eine Klasse von testDbConnect und hat verschiedene Service-Operations-Vertragsfunktionen, die in iservice.cs und service.cs definiert und implementiert sind. Dann in der WPF-Klasse wird dieser Dienst als eine Referenz hinzugefügt und funktioniert perfekt, wenn der Dienst die Funktionen per Knopfklick aufruft. So teste ich das auf Knopfdruck.Wcf referenziert Klassencode-Update

 Service1Client service = new Service1Client(); 

     if (service.Testdb() == 1) //Testdb is the function in service which is only returning 1 
     { 
      MessageBox.Show("Hello there"); 
     } 

Das Problem, das ich bin vor, beginnt es perfekt Service und zeigen das Meldungsfeld (hallo dort) auf die Schaltfläche klicken, aber wenn ich den Code auch in der Schaltfläche klicken bin zu aktualisieren, halten sie immer noch die hallo zeigt es Nachricht Box und nicht Code aktualisieren. Vielleicht gibt es eine Proxy-Generation, aber ich verstehe das nicht. Es wäre toll, wenn mir jemand in einfachen Worten erklären und mir sagen könnte, wie es gelöst werden könnte. Danke

+0

Wo aktualisieren Sie eigentlich Ihren Code in Service oder Client? Können Sie Code teilen, den Sie zu aktualisieren versuchen, und immer noch hallo dort zeigen? – Rajput

Antwort

0

Basierend auf der Art, wie Sie Ihren WCF-Service verbrauchen, müssen Sie Ihre Service-Referenzen aktualisieren.

Angenommen, Sie müssen int Testdb(); in Ihrem Service für int TestDb(); umbenennen.

IService1.cs

[ServiceContract] 
public interface IService1 
{ 
    [OperationContract] 
    int TestDb(); 
} 

Dann zu Ihrem Dienst gehen und Ihre Methode aktualisieren: Sie gehen zu Ihrem Vertrag (IService1.cs), die Signatur passen ändern Service1.cs

Dann auf der Server-Seite Ihr gut zu gehen, aber Sie müssen Ihre Service-Referenz auf Ihrer Client-App aktualisieren, so dass Ihre Proxies die neue Methode signatur widerspiegeln e. So erweitern Sie in Ihrer Client-Anwendung den Ordner "Service-Referenzen", klicken Sie mit der rechten Maustaste auf ServiceReference1 - oder den Namen Ihrer Service-Referenz - und wählen Sie Update Service Reference.

Updating services references

Visual Studio Lassen Sie den Dienstverweis aktualisieren und dann sollten Sie in der Lage sein, die TestDb Methode durch den neuen Namen zu nennen.

Hoffe, das hilft!

+0

Hallo. Vielen Dank für Ihre Antwort. Ich habe dies versucht und jetzt die folgende Ausnahme Weitere Informationen: Die Nachricht mit der Aktion 'http://tempuri.org/IService1/InsertTestdb' kann nicht am Empfänger aufgrund einer ContractFilter Mismatch am EndpointDispatcher verarbeitet werden. Dies kann entweder auf eine Vertragsfehlanpassung (nicht übereinstimmende Aktionen zwischen Sender und Empfänger) oder auf eine Bindungs-/Sicherheitskonflikt zwischen dem Absender und dem Empfänger zurückzuführen sein. Überprüfen Sie, ob Absender und Empfänger den gleichen Vertrag und die gleiche Bindung haben (einschließlich Sicherheitsanforderungen, z. B. Nachricht, Transport, Keine). –

+0

Wo können Sie die Referenz korrekt aktualisieren? VS zeigen irgendwelche Fehler? Dieser Fehler weist darauf hin, dass Sie möglicherweise unterschiedliche Verträge für den Client und den Server haben. –

+0

Schau, ich habe ein Muster für dich zusammengestellt. [Schauen Sie nach] (https://github.com/ktamayop/WcfSample). Lass mich wissen, wie das für dich funktioniert. –

Verwandte Themen