2009-06-12 16 views
8

मैं अपना पहला टाइमर जॉब बना रहा हूं और इसे डीबग करना चाहता हूं। मैंने एक फीचर के माध्यम से टाइमर जॉब स्थापित किया है, और इसे वेबप्लिकेशंस के जॉबडिफिनिशन संग्रह में जोड़ा है, और प्रत्येक 5 मिनट (परीक्षण उद्देश्यों के लिए) चलाने के लिए एक एसपीएमन्यूट शेड्यूल जोड़ा है।शेयरपॉइंट टाइमर नौकरियों को डिबग करना

फिर, विजुअल स्टूडियो में मैंने वेब अनुप्रयोग की प्रक्रिया, केंद्रीय व्यवस्थापक प्रक्रिया और OWSTIMER.exe प्रक्रिया में डीबगर को जोड़ने का प्रयास किया है, लेकिन यह टाइमर जॉब के निष्पादन विधि में डीबग नहीं करेगा। मुझे यहां क्या समझ नहीं आ रहा है।

पीएस टाइमर जॉब स्टेटस सफल होता है, इसलिए यह चल रहा है। अजीब ...

उत्तर

9

जब मैं टाइमरजब्स डीबग कर रहा हूं, तो मैं निष्पादन विधि की पहली शुरुआत में एक सम्मिलन डालता हूं, जो हमेशा असफल हो जाता है। परिणामस्वरूप प्रत्येक बार निष्पादन विधि कहलाती है ताकि आप सुनिश्चित हो सकें कि टाइमर जॉब शुरू हो गया था और डीबगर को संलग्न करने के लिए पर्याप्त समय था। बेशक आपको लाइव जाने से पहले इसे सम्मिलन को हटाना होगा।

System.Diagnostics.Trace.Assert(false); 

एक और महत्वपूर्ण बात आप टाइमर सेवा को पुनः आरंभ कि आप एक नया DLL तैनात के बाद है। अन्यथा टाइमर सेवा पुराने डीएलएल से टाइमर जॉब चलाएगी। \ Windows \ assemly \ GAC_MSIL \ \ फ़ोल्डर:

+0

ऐसा लगता है कि अब थोड़े काम कर रहे हैं ... CLeaned समाधान और टाइमर पुनरारंभ, डीबगर काम कर रहा है ... – Colin

+0

बढ़िया! टाइमरजब्स को डिबग करने से मुझे कुछ सिरदर्द भी हुआ। – Flo

+1

दावे के माध्यम से दिलचस्प विचार ... यदि आप Trace.Assert के बजाय Debug.Assert का उपयोग करते हैं तो आपके द्वारा किए गए किसी भी रिलीज बिल्ड में वह कोड नहीं होगा (हालांकि आपके डीबग बिल्ड में किसी बिंदु पर आप इसे किसी भी तरह से टिप्पणी करना चाहते हैं)। – mundeep

2

सबसे आम कारण हैं:

  1. आप एक डीबग बिल्ड किया?
  2. क्या आपने .pdb फ़ाइल को असेंबली के समान फ़ोल्डर में रखा था? (एक साधारण search को समझाया जाना चाहिए - उदाहरण के लिए Debugging Timer Jobs)
  3. कुछ सुझावों के लिए एमएसडीएन पर Debugging Custom Timer Jobs भी पढ़ें।
  4. 3 आर का प्रदर्शन करें: & पुन: निर्माण असेंबली & फिर से संलग्न करने से पहले टाइमर सेवा रीसेट करें।
+0

जोड़ा गया Debug.Assert = false, मेरी मशीन को पुनः आरंभ, लेकिन OWSTimer मेरी pdb लोड हो रहा है नहीं है (मैं भी यह ग में कॉपी किया? ??? – Colin

+0

प्रोजेक्ट को पुनर्निर्मित करें, विंडोज एक्सप्लोरर के साथ मैन्युअल रूप से असीमित हटा दिया गया है, फिर फ़ाइल को मैन्युअल रूप से एक्सप्लोरर के साथ कॉपी किया है, फिर पीडीबी की प्रतिलिपि बनाई है, और डीबग प्रक्रिया में हुक करता है .... – Colin

+0

माफी सामान्य पुनर्निर्माण/redoploy/पुनरारंभ प्रक्रिया, जवाब संपादित करेंगे :) – mundeep