Ich versuche, eine einfache Botschaft Inspektor zu implementieren, die die Nachricht an das Debug-Fenster von einem Beispiel on MSDN schreibt:WCF Überprüfen Sie Nachrichten
public class MyMessageInspector : IDispatchMessageInspector
{
public object AfterReceiveRequest(ref Message request, IClientChannel channel, InstanceContext instanceContext)
{
System.Diagnostics.Debug.WriteLine(request.ToString());
return null;
}
public void BeforeSendReply(ref Message reply, object correlationState)
{
System.Diagnostics.Debug.WriteLine(reply.ToString());
}
}
Die Antwort schreibt, wie erwartet. Die Anfrage scheint jedoch null zu sein. Irgendwelche Ideen, was könnte schief gehen? Ich verwende einen Service-Referenz-Proxy mit einer Konsolen-App als Client.
Ich verwende basicHttpbinding und hosting mit IIS mit SVC-Datei. Der Parameter für meine Webmethode ist ein komplexer Typ. Ich bin mir nicht sicher, ob das einen Unterschied macht.
Danke für die Info. Ich habe versucht, einen Puffer zu erstellen, aber immer noch nicht funktioniert. Ich werde das Beispiel in Ihrem Link auch versuchen. – Quadwwchs
Anforderungspuffer wird für 'request.ToString()' nicht benötigt. –
Der MSDN-Link gibt in Bezug auf "Extrahieren von Nachrichtentextdaten" an: Sie können auf den Nachrichtentext nur einmal zugreifen, unabhängig davon, wie darauf zugegriffen wird. Ein Nachrichtenobjekt verfügt über eine State-Eigenschaft, die anfänglich auf Created festgelegt ist. Die drei in der vorhergehenden Liste beschriebenen Zugriffsmethoden setzen den Status auf Geschrieben, Gelesen und Kopiert. Darüber hinaus kann eine Close-Methode den Status auf Geschlossen setzen, wenn der Inhalt des Nachrichtenhauptteils nicht mehr benötigt wird. Auf den Nachrichtentext kann nur im Status Erstellt zugegriffen werden, und es gibt keine Möglichkeit, nach dem Statuswechsel in den Status Erstellt zurückzukehren. – Junto