मैं बस इसी तरह की समस्या में भाग गया और यहाँ कोई भी उत्तर उस मुद्दे पर नहीं मारा जो मैं सामना कर रहा था। सवाल के विपरीत, हालांकि, मुझे यह कहते हुए कोई संदेश कभी नहीं मिला कि बांधने में विफलता है। ब्रेकप्वाइंट कभी हिट नहीं होता। उम्मीद है कि यह भविष्य में डब्ल्यूसीएफ के साथ दीवार पर अपना सिर पीटने में मददगार होगा।
टीएल / डीआर:
एसओएपी संदेश में खराब डेटा के साथ एक रिकॉर्ड था, जिसके कारण ब्रेकप्वाइंट हिट नहीं हुआ था।
पूरी कहानी:
मेरे पास एक अन्य टीम से डब्ल्यूएसडीएल पर आधारित डब्ल्यूसीएफ सेवा है। मेरी परिभाषा नहीं, इस पर कोई नियंत्रण नहीं ... मुझे इस सेवा के माध्यम से दूसरी टीम के संदेश प्राप्त होते हैं। मेरे मामले में मुझे संदेश प्राप्त होते हैं, संदेश को डेटाबेस में संदेश लॉग टेबल पर लॉग कर सकते हैं (जो कि मेरी सेवा विधि से पहले हो जाता है) कहा जाता है, सेवा पद्धति को उचित रूप से कहा जाता है (शायद यह नहीं है), और सर्वर जवाब देता है एक 202 स्वीकार किए जाते हैं। संचार काम कर रहा है, सिवाय इसके कि कोई भी डेटा विधि कॉल के दौरान डेटाबेस में सहेजा न जाए।
चूंकि सेवा सफलता की प्रतिक्रिया देती है इसलिए मैंने http और परिवहन से संबंधित मुद्दों को खारिज कर दिया।
इसलिए मैंने सेवा को समाप्त करने के लिए VS2015 को निकाल दिया। प्रश्न में संदेश बड़ा है, लेकिन मैं जो उम्मीद करूंगा उसकी सीमा के भीतर। मैंने सेवा पद्धति की पहली पंक्ति में एक ब्रेकपॉइंट लगाया और बड़े संदेश के माध्यम से भेजा, लेकिन ब्रेकप्वाइंट कभी हिट नहीं हुआ। मैंने एक छोटा सा संदेश देने की कोशिश की जिसे मैं जानता था कि वह बहुत ही रन इंस्टेंस पर काम करता था और ब्रेकप्वाइंट ठीक-ठाक था। इसलिए कॉन्फ़िगरेशन में सब कुछ ठीक लग रहा था। मुझे लगा कि शायद संदेश के आकार में कुछ था।
मैंने वह सब कुछ आज़माया जो मुझे मिल सकता है - यह सुनिश्चित करते हुए कि मैं डिबग कॉन्फिगर, क्लीन एंड रिबिल्ड में था, मैन्युअल रूप से डिबगर को w3wp प्रोसेस से जोड़ रहा था (जो कि वीएस पहले से ही था), Debugger.Break()
ब्रेकपॉइंट के बजाय का उपयोग करके , कई स्टार्टअप प्रोजेक्ट सेट कर रहा है, मेरे टेस्ट प्रोजेक्ट को अनइंस्टॉल कर रहा है इसलिए कि सेवा परियोजना केवल एक ही थी। .NET को अपडेट करना, VS2015 को फिर से शुरू करना, रिबूट करना, स्थानीय IIS से IIS एक्सप्रेस और वापस स्विच करना, गारंटी वाले नवीनतम WSDL के साथ सेवा को फिर से बनाना। कुछ भी मायने नहीं रखता था। ब्रेकप्वाइंट कभी हिट नहीं हुआ।
मैंने बड़े संदेश में एक-एक करके रिकॉर्ड दर्ज किया जब तक कि मुझे एक भी रिकॉर्ड नहीं मिला जिसमें खराब डेटा था। मेरे मामले में यह एक ऐसा रिकॉर्ड था जिसका 2 डेटटाइम फ़ील्ड के लिए कोई मूल्य नहीं था। जब मैंने एक संदेश बनाया, जिसमें यह सिर्फ एक रिकॉर्ड था और इसे भेजा, तो ब्रेकप्वाइंट हिट नहीं हुआ। जब मैंने उन 2 डेटटाइम फ़ील्ड के लिए मान प्रदान किए और ब्रेकपॉइंट में समान (निश्चित) संदेश भेजा, तो अपेक्षित रूप से निकाल दिया गया था।
मेरे पास हर एक सीएलआर अपवाद सक्षम था, लापता .pbd फ़ाइलों के अलावा कुछ भी नहीं निकालता था, जिसकी मुझे परवाह नहीं थी। WCF ने खुशी के साथ खराब रिकॉर्ड के साथ अनुरोध भेजा। मैं यह नहीं कह रहा हूँ कि WCF को अनुबंधों के आधार पर इसे नहीं भेजना चाहिए था, बस इतना कि रिकॉर्ड खराब होने के कारण यह हिट नहीं हो पाया।