2009-06-09 11 views
10

मेरे वेबहोस्ट पर एक ब्रेकडाउन हुआ है। अब आखिर में यह फिर से है, और मुझे अभी तक पता नहीं है कि तकनीशियन क्या तय करते हैं। समस्या अब है मैं त्रुटि प्राप्त:एंटिटी फ्रेमवर्क जब डेटाटेडर बंद हो जाता है तो 'पढ़ें' को कॉल करना

Calling 'Read' when the data reader is closed is not a valid operation. 
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.InvalidOperationException: Calling 'Read' when the data reader is closed is not a valid operation. 

Source Error: 

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below. 

    Stack Trace: 

[InvalidOperationException: Calling 'Read' when the data reader is closed is not a valid operation.] 
    System.Data.Common.Internal.Materialization.Shaper`1.StoreRead() +93 
    System.Data.Common.Internal.Materialization.SimpleEnumerator.MoveNext() +30 
    System.Linq.Enumerable.Single(IEnumerable`1 source) +119 
    System.Data.Objects.ELinq.ObjectQueryProvider.<GetElementFunction>b__2(IEnumerable`1 sequence) +5 
    System.Data.Objects.ELinq.ObjectQueryProvider.ExecuteSingle(IEnumerable`1 query, Expression queryRoot) +25 
    System.Data.Objects.ELinq.ObjectQueryProvider.System.Linq.IQueryProvider.Execute(Expression expression) +43 
    System.Linq.Queryable.Count(IQueryable`1 source) +240 
    BusinessLayer.Car.GetCarCount() in xxx 
    UserControls_SiteInfo.Page_Load(Object sender, EventArgs e) +225 
    System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +14 
    System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +35 
    System.Web.UI.Control.OnLoad(EventArgs e) +99 
    System.Web.UI.Control.LoadRecursive() +50 
    System.Web.UI.Control.LoadRecursive() +141 
    System.Web.UI.Control.LoadRecursive() +141 
    System.Web.UI.Control.LoadRecursive() +141 
    System.Web.UI.Control.LoadRecursive() +141 
    System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +627 

मैं कुछ भी नहीं बदला है, तो यह कुछ अनुमतियों हो सकता है? मैं अभी भी उसी डेटाबेस के साथ अपने डेटाबेस पर लॉग ऑन कर सकता हूं, इसलिए यह लॉगिन जानकारी नहीं है। किसी के पास कोई विचार है?

अद्यतन: मुझे पता चला है कि जब मैं IQuery को सूची में परिवर्तित करने का प्रयास करता हूं तो मुझे त्रुटि मिलती है। मुझे पहले कभी त्रुटि नहीं मिली, क्या इससे आप में से कोई भी एक सुराग देता है जो गलत हो सकता है?

+0

जब आप प्रत्यक्ष SQL क्वेरी करते हैं तो क्या होता है? (linq-to-sql का उपयोग नहीं कर रहा है) –

+0

मुझे पता चला है कि यह मेरे डेटाबेस या नेटवर्क के साथ मेरे वेबहोस्ट में एक त्रुटि है, इसलिए इसमें इकाई ढांचे के साथ कुछ भी नहीं है। – Dofs

+0

'ILI' के लिए' IENumerable' को बदलना मेरे लिए समस्या का समाधान मैं एक स्पोक – safhac

उत्तर

24

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

क्वेरी को किसी IList में कनवर्ट करने से क्वेरी को निष्पादित किया जाएगा। यदि इस बिंदु पर डेटा संदर्भ बंद है तो आपको इस तरह की त्रुटि मिल जाएगी।

मैं समझा नहीं सकता कि अगर आपने कोई कोड नहीं बदला है तो आपको यह क्यों नहीं मिला है, लेकिन यह वही है जो मैं देख रहा हूं।

शायद अपना कोड पोस्ट करें, यह समस्या का निदान करने में मदद कर सकता है।

+6

यह स्वीकार्य उत्तर क्यों है? – Jeroen

+0

आलसी लोडिंग और फोर्सिंग एंटिटी फ्रेमवर्क के मुद्दे को इंगित करने के लिए स्मृति में सामग्री को लोड करने के लिए मेरी समस्या हल हो गई।क्वेरी के होस्टिंग ईएफ संदर्भ का निपटारा करने से पहले मैं क्वेरी के परिणामों को स्मृति में बल देने के लिए '.ToList()' का उपयोग करता हूं। – Zarepheth

2

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

+0

धन्यवाद मुझे डेटाबेस में भी समस्या है, इवेंट सिलेक्ट * काम नहीं कर रहा था ... त्रुटि संदेश 605, स्तर 21, राज्य 3, रेखा 1 डेटाबेस 30 में लॉजिकल पेज (1: 640) लाने का प्रयास विफल रहा। यह आवंटन इकाई 7946994385574035456 से 720575 94046709760 तक नहीं है। –

1

मेरे कंप्यूटर को अप्रत्याशित रूप से बंद होने के बाद मुझे यह त्रुटि मिलनी शुरू हुई। इस धागे को पढ़ने के बाद, जेम्स एलिस-जोन्स के जवाब ने मुझे एसक्यूएल प्रोफाइलर का उपयोग करने के लिए एसक्यूएल प्रोफाइलर का उपयोग करने का नेतृत्व किया। टोलिस्ट() को कॉल किया गया, और मैंने एसक्यूएल सर्वर प्रबंधन स्टूडियो में एसक्यूएल चलाया। यह संदेश है कि SQL सर्वर लौटा:

SQL सर्वर को एक तार्किक स्थिरता-आधारित I/O त्रुटि मिली: गलत चेकसम (अपेक्षित: 0xb6a6f70e; वास्तविक: 0xb6a74f0e)। फ़ाइल 'डी: \ वर्क \ DATABASES \ SQL2008R2 \ xxxxx.mdf' में ऑफसेट 0x000000188d8000 पर डेटाबेस आईडी 5 में पृष्ठ (1: 50284) के पढ़ने के दौरान यह हुआ। SQL सर्वर त्रुटि लॉग या सिस्टम इवेंट लॉग में अतिरिक्त संदेश अधिक जानकारी प्रदान कर सकते हैं। यह एक गंभीर त्रुटि स्थिति है जो डेटाबेस अखंडता को धमकी देती है और उसे तुरंत ठीक किया जाना चाहिए। एक पूर्ण डेटाबेस स्थिरता जांच (डीबीसीसी CHECKDB) को पूरा करें। यह त्रुटि कई कारकों के कारण हो सकती है; अधिक जानकारी के लिए, SQL सर्वर पुस्तकें ऑनलाइन देखें।

तो मेरे मामले में, अप्रत्याशित शटडाउन ने एक असंगत स्थिति में डेटाबेस छोड़ दिया। मैं डेटाबेस बैकअप को सफलतापूर्वक पुनर्स्थापित करने में सक्षम था और त्रुटि चली गई।

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