Rufen Sie den WCF-Dienst auf, ohne den Vertragstyp zu kennenC#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Rufen Sie den WCF-Dienst auf, ohne den Vertragstyp zu kennen

Post by Anonymous »

Ich versuche, eine Gesundheitsüberwachung in WCF zu implementieren. Um dies serverseitig zu erreichen, füge ich für Dienste, die meinen benutzerdefinierten Diensthost verwenden, einen „Ping“-Vorgang in bestehende Vertragsvorgänge ein.
Auf der Clientseite versuche ich dies Rufen Sie den dynamisch hinzugefügten Ping-Vorgang auf, ohne den Kontakttyp zu kennen. Wie kann ich die Ping-Methode aufrufen?
Ich habe unten auf der Clientseite versucht, dies zu erreichen, aber es funktioniert nicht
var channel = GetServiceProxy(); var result = channel.Ping();

[ServiceContract(Namespace = "http://tempuri.org/")]
public interface IDynamicPing
{
[OperationContract(Action = "http://tempuri.org/Ping")]
string Ping();
}

public static IDynamicPing GetServiceProxy()
{
var binding = new NetNamedPipeBinding(NetNamedPipeSecurityMode.None);
binding.MaxReceivedMessageSize = 9999999;

var endpoint = new EndpointAddress("net.pipe://localhost/SampleWcfCustomerService/Service.svc");

ChannelFactory factory = new ChannelFactory(binding, endpoint);

return factory.CreateChannel(endpoint);
}

Serverseitige web.config sieht so aus:
  
    
    
  



  
    
      
    
  



Ich erhalte diese Fehlermeldung, während ich den hinzugefügten Ping-Vorgang dynamisch aufrufe:

Die Nachricht mit Aktion „http://tempuri.org/Ping“ kann beim Empfänger aufgrund einer ContractFilter-Nichtübereinstimmung beim EndpointDispatcher nicht verarbeitet werden. Dies kann entweder auf eine Vertragsinkongruenz (nicht übereinstimmende Aktionen zwischen Sender und Empfänger) oder auf eine Bindungs-/Sicherheitsinkongruenz zwischen Sender und Empfänger zurückzuführen sein. Überprüfen Sie, ob Sender und Empfänger denselben Vertrag und dieselbe Bindung haben (einschließlich Sicherheitsanforderungen, z. B. Nachricht, Transport, Keine).'

Gibt es eine Möglichkeit? dass ich die Servicemethode aufrufen kann, ohne den Vertrag zu kennen? ODER ist es möglich, Reflexion zu verwenden?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post