2009-12-18 7 views
7

मैं अपने कनेक्शन मेरे कोड से सेट अप के सभी के रूप में मेरे कॉन्फ़िग फ़ाइल का उपयोग कर करने का विरोध किया है, से ट्रेसिंग। कोड से बने कनेक्शन पर डब्ल्यूसीएफ ट्रेसिंग स्थापित करने के बारे में कोई कैसे जाता है। मैंने कॉन्फ़िगरेशन फ़ाइल में ट्रेसिंग जोड़ने का प्रयास किया, जैसा कि here समझाया गया है, लेकिन यह कोई भी लॉग उत्पन्न नहीं करता है।WCF कोड

मैं या तो कैसे यह कोड में सेट अप कनेक्शन के लिए कॉन्फ़िग फ़ाइल से काम करने के लिए, या कैसे इसे मैन्युअल रूप से कॉन्फ़िगर करने के लिए कोड में अगर कोई किसी भी जानकारी है पता करने की जरूरत। धन्यवाद!

संपादित करें:

आवेदन एक सी # कंसोल अनुप्रयोग है, और मेरे बंधन के रूप में घोषित किया जाता है:

private Binding getBinding() 
{ 
    NetTcpBinding tcp = new NetTcpBinding(); 
    tcp.ReaderQuotas.MaxArrayLength = 65535; 
    tcp.TransferMode = TransferMode.Streamed; 
    tcp.ReaderQuotas.MaxArrayLength = int.MaxValue; 
    tcp.ReaderQuotas.MaxDepth = int.MaxValue; 
    tcp.ReaderQuotas.MaxStringContentLength = int.MaxValue; 
    tcp.ReaderQuotas.MaxBytesPerRead = int.MaxValue; 
    tcp.ReaderQuotas.MaxNameTableCharCount = int.MaxValue; 
    tcp.MaxReceivedMessageSize = int.MaxValue; 
    return tcp; 
} 

और मैं तो एक सामान्य का उपयोग कर मेरे ऐप पर सेवाओं को जोड़ने के लिए एक छोटे से अधिक जानकारी जोड़ने के लिए फ़ंक्शन:

private List<ServiceHost> m_Hosts = new List<ServiceHost>(); 
private static List<string> m_Services = new List<string>(); 

public void AddHost<T1, T2>(string uri) 
    where T1 : class 
    where T2 : class 
{ 
    m_Services.Add("net.tcp://<ipaddress>:<port>/" + uri); 
    m_Hosts.Add(new ServiceHost(typeof(T1))); 
    m_Hosts[m_Hosts.Count - 1].AddServiceEndpoint(typeof(T2), getBinding(), m_Services[m_Services.Count - 1]); 
} 

यह सब काम करने के लिए स्पष्ट रूप से थोड़ा और कोड है, लेकिन इससे कोई प्रासंगिक भाग देना चाहिए।

उत्तर

5

निम्नलिखित, अनुरेखण यदि आप इसे एक और प्रयास देना चाहता हूँ सक्षम करने के लिए एक .config उदाहरण है। सुनिश्चित करें कि .config फ़ाइल आपके डब्ल्यूसीएफ सेवा होस्ट के उसी फ़ोल्डर में स्थित है।

<configuration> 
    <system.diagnostics> 
    <sources> 
     <source name="System.ServiceModel" switchValue="Warning" propagateActivity="true" > 
     <listeners> 
      <add name="xml"/> 
     </listeners> 
     </source> 

     <source name="myUserTraceSource" switchValue="Warning, ActivityTracing"> 
     <listeners> 
      <add name="xml"/> 
     </listeners> 
     </source> 
    </sources> 

    <sharedListeners> 
     <add name="xml" 
      type="System.Diagnostics.XmlWriterTraceListener" 
      initializeData="TraceLog.svclog" /> 
    </sharedListeners> 

    </system.diagnostics> 
</configuration> 

Microsoft फ़ाइलों .svclog पढ़ने के लिए एक Service Trace Viewer Tool प्रदान करता है।

यकीन है कि पथ जहां .svclog बचत हो जाएगा आवश्यक लिखने की अनुमति है सुनिश्चित करें।

+1

आप यह सुनिश्चित करें कि 'initializeData =' विशेषता एक फ़ोल्डर में एक फ़ाइल का नाम है बनाने के लिए चाहता हूँ वह स्थान जो आपकी सेवा द्वारा लिखने योग्य है। अन्यथा कुछ भी लिखा नहीं है। –

+0

कुछ भी नहीं ... यह किसी भी अपवाद या कुछ भी नहीं फेंकता है, लेकिन यह भी एक लॉग फ़ाइल नहीं बनाता है। –

+0

@ md5sum: क्या आप जांच सकते हैं कि मेजबान एप्लिकेशन द्वारा आपकी 'app.config' फ़ाइल पढ़ी जा रही है? उदाहरण के लिए, ' जोड़ने' अपने 'app.config' में और' System.Configuration.ConfigurationSettings.AppSettings के साथ पढ़ने की कोशिश [ "TEST_KEY <=" 1 "/ key =" TEST_KEY "मूल्य जोड़ने> कोशिश "]' आपके मेजबान आवेदन से। –