Comment ouvrir une session FMC contenu du message?
Je pensais que ce serait simple, mais je ne vois pas comment le dire à la WCF pour connecter le corps du message. J'ai:
<system.diagnostics>
<sources>
<source name="System.ServiceModel" switchValue="Verbose">
<listeners>
<add type="System.Diagnostics.DefaultTraceListener" name="Default">
<filter type="" />
</add>
<add type="Microsoft.Practices.EnterpriseLibrary.Logging.TraceListeners.EntLibLoggingProxyTraceListener,Microsoft.Practices.EnterpriseLibrary.Logging"
name="traceListener">
<filter type="" />
</add>
</listeners>
</source>
</sources>
</system.diagnostics>
<system.serviceModel>
<diagnostics>
<messageLogging logEntireMessage="true" logMalformedMessages="true"
logMessagesAtServiceLevel="true" logMessagesAtTransportLevel="false" />
</diagnostics>
...etc..,
...etc...
</system.Model>
<loggingConfiguration name="" tracingEnabled="true" defaultCategory="General">
<listeners>
<add fileName="_trace-xml.log"
listenerDataType="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.XmlTraceListenerData,Microsoft.Practices.EnterpriseLibrary.Logging"
traceOutputOptions="None"
type="Microsoft.Practices.EnterpriseLibrary.Logging.TraceListeners.XmlTraceListener,Microsoft.Practices.EnterpriseLibrary.Logging"
name="XML Trace Listener" />
...etc... other listeners
</listeners>
...etc...
</loggingConfiguration>
Mais tout ce que je reçois connecté est des trucs sur le message, pas le corps du message. De quoi ai-je besoin de changer de journal contenu du message?
Vous devez vous connecter pour publier un commentaire.
Si vous avez besoin de corps de message, vous devrez les saisir vous-même, en programmant. Utilisez un comportement de service pour installer un message d'inspecteur et de capturer les messages à l'intérieur de votre mise en œuvre de IDispatchMessageInspector ou IClientMessageInspector.
System.ServiceModel.MessageLogging
et un écouteur pour consigner les messages fonctionne très bien pour moi. Il n'y a pas de message d'inspecteur nécessaire.Juste à la suite de cette description, fonctionne parfaitement pour moi: http://msdn.microsoft.com/en-us/library/ms730064.aspx
Pas nécessaire d'écrire du code pour que ...
J'ai trouvé un problème de gestion des versions. Lorsque le Service WCF projet a été construit contre la .Net 3.5, j'ai vu le message complet du corps dans la visionneuse. Construit contre la .Net 4.0 je n'ai pas vu le corps du message.
<source name="System.ServiceModel">
Messages:<source name="System.ServiceModel.MessageLogging">
stackoverflow.com/questions/11264260/...Essayer http://www.csharptutorial.in/12/csharp-net-wcf-how-to-enable-wcf-tracing-and-messagelogging et d'installation logMessagesAtTransportLevel="true". Dans votre fichier de log, vous pouvez trouver
<s:Body>
balises. Enquêter sur le texte à côté d'eux. Plus tard, vous pouvez ajouter de nouveaux "XmlListener" et a trouvé le corps du message dans plus souple format.Vous pouvez envisager une autre façon de voir XML SOAP - personnalisé MessageEncoder. La principale différence à partir d'une même IDispatchMessageInspector /IClientMessageInspector est qu'il fonctionne sur le niveau inférieur, de sorte qu'il capte l'origine de l'octet contenu, y compris toute xml mal formé.
Afin de mettre en œuvre le suivi à l'aide de cette approche, vous avez besoin d'envelopper un standard textMessageEncoding avec message personnalisé codeur que de nouvelles élément de liaison et d'application de la coutume de liaison à l'extrémité de votre config.
En outre vous pouvez voir à titre d'exemple comment je l'ai fait dans mon projet
emballage textMessageEncoding, l'exploitation forestière codeur, liaison personnalisée élément et config.