6

के साथ ठीक से समाप्त नहीं हुआ है, मैं वेब एपीआई नियंत्रक पर डेटा पुनर्प्राप्त करने के लिए ईएफ 7 आरसी 1 कोड फर्स्ट मॉडल के साथ एमवीसी 6 आरसी 1 का उपयोग कर रहा हूं। मेरे पास 3 टेबल समान हैं।वेब एपीआई (एमवीसी 6) चंकित निकाय 0-आकार के खंड

class Product 
{ 
    public int Id { get; set; } 
    public string SomeProperty { get; set; } 
    public virtual ICollection<Categorization> Categorizations { get; set; } 
    public DateTime SomeProperty2 { get; set; } 
    public string SomeProperty3 { get; set; } 
    public string SomeProperty4 { get; set; } 

} 

// NOTE: Entity key should be (ProductId, CategoryId) 
class Categorization 
{ 
    public int ProductId { get; set; } 
    public Product Product { get; set; } 

    public int CategoryId { get; set; } 
    public Category Category { get; set; } 
} 

class Category 
{ 
    public int Id { get; set; } 
    public ICollection<Categorization> Categorizations { get; set; } 
} 

मेरे नियंत्रक:

[ActionName("searchProducts")] 
     public IEnumerable<Product> searchProducts(string searchText,int? id) 
     { 
      var ret= db.Products 
       .Include(s => s.Categorizations).Take(2).ToList(); 
      return ret; 
     } 

नीचे मेरी Startup.cs ConfigureServices खंड है।

  services.AddMvc() 
       .AddJsonOptions(options=> 
       { 
        options.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver(); 
        options.SerializerSettings.MissingMemberHandling = Newtonsoft.Json.MissingMemberHandling.Ignore; 
       }); 
      services.AddCors(); 

      var connectionString = Configuration.GetSection("Data:DefaultConnection:ConnectionString").Value; 

      services.AddEntityFramework() 
       .AddSqlServer() 
       .AddDbContext<ContractsContext>(options => options.UseSqlServer(connectionString)); 


      services.AddSingleton(_ => Configuration); 
      services.AddSingleton<IContractRepository, ContractRepository>(); 

जब मैं API कॉल, मैं "के रूप में chunked शरीर 0 आकार हिस्सा के साथ ठीक से समाप्त नहीं किया" फ़िडलर में त्रुटि मिलती है। फिडलर परिणाम में, मैं केवल अपेक्षित परिणाम सेट की पहली वस्तु को गुणों के साथ सेट करता हूं जब तक कि वर्गीकरण भर नहीं जाता है और उसके बाद कोई गुण और शेष वस्तुएं नहीं होती हैं (अपूर्ण जेएसओएन डेटा)। यदि मैं परिणाम सेट में वर्गीकरण शामिल नहीं करता हूं, तो यह पूरी तरह से ठीक काम करता है। क्या मैं कुछ भूल रहा हूँ? नोट: ईएफ डेटा को सही तरीके से वापस कर रहा है लेकिन यह एपीआई कॉल में चकित हो रहा है और क्लाइंट डेटा को पूरी तरह से पढ़ने में असमर्थ है।

+0

http://stackoverflow.com/questions/22608564/neterr-incomplete-chunked-encoding-in-chrome-only – Avi

+0

नीचे के रूप में बदलें Startup.cs ConfigureServices खंड उन सभी विकल्पों की कोशिश की। काम नहीं किया था। मेरे मामले में, यह क्रोम, आईई, फिडलर, पोस्टमैन के साथ सिर्फ इस मुद्दे का सामना नहीं कर रहा है। डब्ल्यू हिले पोस्टमैन त्रुटियों से बाहर निकलें, फिडलर कम से कम उस डेटा को दिखाता है। – TSR

+1

यह अनंत लूप की तरह दिखता है। उत्पाद में वर्गीकरण और वर्गीकरण होते हैं – Avi

उत्तर

0

सबसे पहले, सुनिश्चित करें कि आप तार पर 1 टीबी डेटा नहीं भेज रहे हैं लेकिन इसके अलावा, मैं सुनिश्चित करता हूं कि आप फिडलर के बिना इसका परीक्षण कर रहे हैं।

फिडलर की कुछ सेटिंग्स हैं जहां कुछ परिदृश्य में, खंडित संदेश समस्या का कारण बन सकता है।

कृपया सुनिश्चित करें कि डिकोड विकल्प चयनित नहीं है सुनिश्चित करें:

Decode Option

बाकी सब विफल रहता है, हमें अपनी परियोजना Startup.csConfigure/ConfigureServices अनुभाग के रूप में और अधिक जानकारी देने के लिए सुनिश्चित करें।

+0

धन्यवाद। डिकोड विकल्प का चयन नहीं किया गया है, उसी परिणाम के साथ फिडलर के बिना अन्य क्लाइंटों को भी आजमाया। नीचे मेरा Startup.cs कॉन्फ़िगर सर्विसेज अनुभाग है। 'कोड सेवाएं। AddMvc(); सेवाएं। AddCors(); var connectionString = Configuration.GetSection ("डेटा: डिफ़ॉल्ट कनेक्शन: कनेक्शनस्ट्रिंग")। मान; सेवाएं। AddEntityFramework() .ddSqlServer() .ddDbContext (options => options.UseSqlServer (कनेक्शनस्ट्रिंग)); सेवाएं। AddSingleton (_ => कॉन्फ़िगरेशन) जोड़ें; सेवाएं। AddSingleton (); ' – TSR

+0

फिर आपके आवेदन के सामान्य प्रवाह में कुछ हस्तक्षेप होता है। यह आपकी मशीन पर कस्टम कोड या दूसरी प्रक्रिया हो सकती है जो अनुरोध अवरुद्ध कर रहा है (फ़ायरवॉल, एंटीवायरस, एंटीमाइवेयर, आदि)। क्या यह समस्या केवल आपकी मशीन पर है या क्या यह कोड किसी अन्य मशीन पर काम करता है? –

+0

क्या आप इसे टिप्पणी में नहीं अपने प्रश्न में जोड़ सकते हैं? हम सभी स्वरूपण खो रहे हैं। –

7

समस्या मिली। प्रकार संदर्भ 'उत्पाद' के साथ संपत्ति 'उत्पाद' के लिए स्वयं संदर्भ लूप का पता चला। पथ '[0] वर्गीकरण [0]'।

तो, ईएफ उत्पाद वस्तु में वर्गीकरण संग्रह और वर्गीकरण में उत्पाद वस्तु दोनों को भरता है। तो, JSON के serializing जबकि यह बन गया एक अनंत लूप, जैसे:

उत्पाद> वर्गीकरण (eachCategorization - उत्पाद> वर्गीकरण (eachCategorization - उत्पाद> वर्गीकरण (eachCategorization - उत्पाद> वर्गीकरण (....

समाधान:

services.AddMvc() 
       .AddJsonOptions(options => 
       { 
        options.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore; 
       }); 
+1

इसे साझा करने के लिए धन्यवाद। यह वास्तव में सहायक था। – marianc

+1

@TSR आपने मुझे अपने आखिरी बालों को खींचने से बचा लिया है, मैं ईएफ पक्ष पर अपने डेटा डिज़ाइन के साथ कुछ गलत कर रहा था, लेकिन जैसा कि आपने बताया है, यह ब्राउज़र के जेसन सर्कुलर रेफरेंसिंग त्रुटि का प्रबंधन था। – Nexus23

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