मेरे पास एक asp.net एप्लिकेशन है, जो क्रैश हो रहा है।क्या क्लियर कॉलस्टैक में इंटरफ़ेस देखना सामान्य है?
Exception type: EntryPointNotFoundException
Exception message: Entry point was not found.
at ***.Interfaces.Portal.Repository.ILookup.get_LookupDataCollection()
at ***.Portal.Repository.Lookup.GetLookUpValue(ILookup lookup, Int32 index)
at ***.Portal.Repository.Lookup.GetLookUpValue(ILookup lookup)
at ***.HttpModules.RuntimeHttpModule.SetPageUrlInfoInContext(PageUrlInfo pinfo)
at ***PortalRuntime.HttpModules.RuntimeHttpModule.BeginRequest(Object sender, EventArgs e)
at System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
यह केवल एक ग्राहक मशीन पर होता है और मैं इसे स्थानीय स्तर पर पुन: पेश करने में सक्षम नहीं था: वहाँ खिड़कियों घटना लॉग जो इस callstack शामिल में इस के लिए एक प्रवेश है। जैसा कि आप शीर्ष पर देखते हैं वहां एक इंटरफ़ेस है (ILookup
, जो वास्तव में एक इंटरफ़ेस है, कक्षा नहीं है)।
मैंने एक समान नमूना बनाया (विधि को इंटरफ़ेस के माध्यम से बुलाया गया)। विजुअल स्टूडियो 2015 बहुत चालाक इस दिखाने के लिए है:
ConsoleApplication2.exe!ConsoleApplication2.Lookup.GetLookupId(ConsoleApplication2.ILookup lookup) Line 37 C#
लेकिन वहाँ आप अभी भी वर्ग है जो विधि को लागू करता है देखते हैं। मैंने विंडबग के साथ अपने नमूने से भी जुड़ा हुआ और स्टैक मुद्रित किया जब एप्लिकेशन इंटरफ़ेस के माध्यम से बुलाए गए विधि में ब्रेकपॉइंट में बैठता है: इंटरफ़ेस स्टैक पर नहीं था।
यह (विशेष रूप से वर्ग है जो इसे लागू करता है) के बिना एक clr callstack में एक इंटरफेस को देखने के लिए सामान्य है:
यहाँ मेरे सवाल है? मुझे लगता है कि मैंने कभी ऐसा कॉलस्टैक कभी नहीं देखा है ... कोई और? (मैं सामान्य रूप में यह मतलब है, मेरे सवाल के दूसरे भाग की परवाह किए बिना)
Here काफ़ी मिलती-जुलती सवाल यह है: अपनी पहली टिप्पणी में @Hans Passant कहते हैं, "एक अंतरफलक विधि के लिए क्रियान्वयन विधि को हल करने के लिए विफलता" और ओपी का कहना है कि "आपने पहले ही अपनी टिप्पणी के साथ अपने प्रश्न का उत्तर दिया है"। तो क्या यह वास्तव में मूल कारण है? क्या किसी को इसके लिए एक फिक्स के बारे में पता है? या यह सिर्फ एक विशेष सीएलआर संस्करण है?
स्पष्टीकरण के लिए बहुत धन्यवाद! यह स्पष्ट करता है कि हम स्टैक के शीर्ष पर इंटरफ़ेस क्यों देखते हैं। शायद एक टिप्पणी: "और मशीन कोड पैच करता है ताकि कॉल पता बदल दिया जा सके। तो अगली बार जब विधि निष्पादित होती है तो आप बाध्यकारी विधि की कीमत का भुगतान नहीं करते हैं "हां, लेकिन अगर अगली बार विधि को किसी अन्य प्रकार से बुलाया जाता है, जो इंटरफ़ेस लागू करता है? Jitted कोड में एक कार्यान्वयन के लिए एक फिक्स कॉल नहीं हो सकता है। लेकिन वैसे भी, मैं आपके बिंदु को समझता हूं। एक बार फिर धन्यवाद! – gregkalapos
हाँ, यही वह हिस्सा है जिसके बारे में मुझे पर्याप्त जानकारी नहीं है। यह काम करता हैं। –