2012-06-29 14 views
8

मैं एक डब्ल्यूसीएफ सेवा का निदान करने की कोशिश कर रहा हूं जो अपेक्षाकृत सरल सेवा होस्ट प्रक्रिया (Service.exe) में स्वयं-होस्ट किया गया है।डब्ल्यूसीएफ: मैं संदेश निकायों का पता कैसे लगा सकता हूं?

मैं Service.exe.config इस प्रकार कॉन्फ़िगर किया है:

<?xml version="1.0" ?> 
<configuration> 
    <system.diagnostics> 
    <sources> 
     <source name="System.ServiceModel" 
       switchValue="All" 
       propagateActivity="true"> 
     <listeners> 
      <add name="traceListener" 
       type="System.Diagnostics.XmlWriterTraceListener" 
       initializeData= "c:\temp\Service.svclog" /> 
     </listeners> 
     </source> 
    </sources> 
    </system.diagnostics> 
    <system.serviceModel> 
    <diagnostics> 
     <messageLogging maxMessagesToLog="1" 
         maxSizeOfMessageToLog="2147483647" 
         logEntireMessage="true" 
         logMessagesAtServiceLevel="true" 
         logMalformedMessages="true" 
         logMessagesAtTransportLevel="true"> 
     </messageLogging> 
    </diagnostics> 
    </system.serviceModel> 
    <startup> 
    <supportedRuntime version="v4.0" 
         sku=".NETFramework,Version=v4.0" /> 
    </startup> 
</configuration> 

जब मैं जिसके परिणामस्वरूप svclog फ़ाइल को देखो, मैं कई ट्रेस घटनाओं लॉग किया जा रहा देखने के (मैं उम्मीद सिर्फ पहला संदेश लॉग इन करने की), और किसी भी संदेश का पता लगाया जा रहा संदेश संदेश (केवल शीर्षलेख) दिखाता है।

मुझे यकीन है कि मुझे यहां कुछ आसान याद आना चाहिए, लेकिन मुझे यह नहीं दिख रहा है।

अद्यतन: जब मैं डब्ल्यूसीएफ कॉन्फ़िगर संपादक को देखता हूं, तो "डायग्नोस्टिक्स" के तहत दो अनुभाग होते हैं: संदेश लॉगिंग और ट्रेसिंग। जब मैं "EnableMessageLogging" लिंक पर क्लिक, मेरे कॉन्फ़िग फ़ाइल अद्यतन हो जाता है:

<system.diagnostics> 
    <sources> 
     <source propagateActivity="true" name="System.ServiceModel" switchValue="All"> 
     <listeners> 
      <add type="System.Diagnostics.DefaultTraceListener" name="Default"> 
      <filter type="" /> 
      </add> 
      <add initializeData="c:\temp\MessageBodyTracing.svclog" type="System.Diagnostics.XmlWriterTraceListener" 
      name="traceListener"> 
      <filter type="" /> 
      </add> 
     </listeners> 
     </source> 
     <source name="System.ServiceModel.MessageLogging" switchValue="Warning, ActivityTracing"> 
     <listeners> 
      <add type="System.Diagnostics.DefaultTraceListener" name="Default"> 
      <filter type="" /> 
      </add> 
      <add name="ServiceModelMessageLoggingListener"> 
      <filter type="" /> 
      </add> 
     </listeners> 
     </source> 
    </sources> 
    <sharedListeners> 
     <add initializeData="c:\users\me\documents\visual studio 2010\projects\messagebodytracing\messagebodytracing\app_messages.svclog" 
     type="System.Diagnostics.XmlWriterTraceListener, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" 
     name="ServiceModelMessageLoggingListener" traceOutputOptions="Timestamp"> 
     <filter type="" /> 
     </add> 
    </sharedListeners> 
    </system.diagnostics> 

मुझे लगता है कि स्रोत System.ServiceModel.MessageLogging नामित कुंजी है - मैं संदेश के किसी भी दस्तावेज में पता लगाने कि नहीं देखा था .. । जोड़ने

+0

में MessageLogging क्यों 'maxMessagesToLog =" 1 "' है? क्या यह उद्देश्य पर है? –

+0

हां, मैं देखना चाहता था कि अनुभाग में कुछ भी प्रभावी हो रहा था, और ऐसा प्रतीत नहीं होता है। – lesscode

उत्तर

6

कोशिश करने के लिए:

<endToEndTracing propagateActivity="true" activityTracing="true" messageFlowTracing="true" /> 

अपने diagnostics नोड में, messageLogging के तहत।

+0

मदद नहीं की। मैंने एक नई डब्ल्यूसीएफ सेवा लाइब्रेरी प्रोजेक्ट बनाते समय आपको "हैलो वर्ल्ड" सेवा के साथ भी कोशिश की है, और मुझे वहां संदेश संदेश नहीं मिला है, या तो। उलझन में। – lesscode

+0

क्या आपने वीएसएफ से डब्ल्यूसीएफ कॉन्फ़िगरेशन एडिटर का उपयोग करने की कोशिश की है और देखें कि आपकी सेवा .config के लिए क्या उत्पन्न हुआ है? –

+0

आह, हाँ। अद्यतन प्रश्न – lesscode

3

सेट LogEntireMessage सत्य पर Diagnostics- के तहत> सेवा विन्यास संपादक

+4

देखें यह सिर्फ इसे बनाता है ताकि दर्शक "0 स्ट्रीम ..." दर्शक में दिखाया जा सके –

+1

@ जो फिलिप्स ट्रांसफरमोड स्ट्रीमिंग पर सेट है। ट्रेसिंग केवल ट्रांसफॉर्म को Buffered पर सेट करते समय काम करता है! आपको अपनी कॉन्फ़िगरेशन बदलनी होगी। –

संबंधित मुद्दे