2012-08-24 3 views
6

मुझे कई दिनों तक यह समस्या हो रही है (अब इस मुद्दे पर आने वाले किसी भी व्यक्ति के लिए निश्चित और समाधान नोट किया गया है और अपने बालों को खींच रहा है)।एमवीसी वेबएपीआई कोई जानकारी के साथ 500 त्रुटि लौटा रहा है

मेरी Silverlight आवेदन जो डेटा के लिए MVC4 वेबएपीआई का उपयोग करता है करने के लिए कोड में परिवर्तन की मेरी नवीनतम दौर के बाद, मैं अपने HttpGet क्रियाओं में से एक है जो IQueryable<oneofmyclasses> लौट रहा था के साथ एक समस्या हो रही थी। अनुरोध देखने के लिए फिडलर 2 का उपयोग करके, मैं देख सकता था कि मुझे आंतरिक सर्वर त्रुटि (500) मिल रही थी, जिसमें कोई बॉडी टेक्स्ट क्यों नहीं समझाया गया था। मुझे मेरी कार्रवाई में कोई त्रुटि नहीं मिली।

चेक 1: मैंने सत्यापित किया कि मेरी कार्रवाई वास्तव में return collection.AsQueryable(); लाइन में कोई त्रुटि नहीं है। यह था

चेक 2: मैं सत्यापित है कि मेरे डेटा (छ मेरे संग्रह है) इस कोड का उपयोग नहीं त्रुटियों के साथ JSON के serializing गया था:

var json = new JsonMediaTypeFormatter(); 
      json.SerializerSettings.PreserveReferencesHandling = PreserveReferencesHandling.Objects; 
      ObjectContent<IEnumerable<Model.MenuGroup>> responseContent = new ObjectContent<IEnumerable<Model.MenuGroup>>(g, json); 
      MemoryStream ms = new MemoryStream(); 

      responseContent.CopyToAsync(ms).Wait(); 
      ms.Position = 0; 
      var sr = new StreamReader(ms); 
      var str = sr.ReadToEnd(); 

यह भी काम किया। मैंने एक्सएमएल फॉर्मेटर का उपयोग करके इसका परीक्षण भी किया, भले ही मुझे पूरा यकीन था कि यह कभी भी JSON का उपयोग नहीं करता है (बहुत सावधान नहीं हो सकता है)।

चेक 3: सक्षम नेट फ्रेमवर्क डीबगिंग। इस बार जब त्रुटि हुई (HttpApplication.cs में) वीएस 2012 ने इसे पकड़ा।

मेरे त्रुटि:

इन विशेषताओं के साथ संपत्ति चिह्नित होने के बावजूद,

[XmlIgnore] 
[IgnoreDataMember] 
[JsonIgnore] 

नेट स्रोत एक मेरी संपत्ति में से एक पर मिल बुला रहा था। पकड़ो, यह केवल एक लेखन संपत्ति थी। मैंने बस

get { return null; } 

और समस्या हल हो गई।

मुझे शायद पहले चेक 3 करना चाहिए था, लेकिन इस त्रुटि के साथ मेरे पिछले अनुभव ने आमतौर पर मेरी ऑब्जेक्ट्स को क्रमबद्ध करने की कोशिश में एक त्रुटि दिखाई है, यही कारण है कि जब मैंने धारावाहिक किया था तो मेरे सिर का थोड़ा सा खरोंच था ठीक से और त्रुटि बनी हुई है।

+0

खुशी है कि आप इसे समझने में सक्षम थे। आपको उस चेक को लिखना चाहिए जो इसे उत्तर के रूप में हल करता है। :) –

+0

http://stackoverflow.com/questions/10944938/asp-net-web-api-non-descriptive-500- आंतरिक- सर्वर-error/34352049#34352049 मदद कर सकता है। – GGleGrand

उत्तर

6

मैंने इसे कैसे हल किया:

सक्षम नेट फ्रेमवर्क डीबगिंग। टूल्स -> विकल्प -> डिबगिंग -> '.NET Framework स्रोत स्टेपिंग सक्षम करें'

इस बार जब त्रुटि हुई (HttpApplication.cs में) VS 2012 ने इसे पकड़ा।

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