2012-11-07 14 views
6

द्वारा यादृच्छिक रूप से वापस किया जा रहा है मैं विंडोज सर्वर 2008 आर 2 पर एक एएसपी.Net ऐप चला रहा हूं। मेरे पास .NET Framework 4.5 स्थापित है। .NET Framework v2.0 से v4.0 में माइग्रेट करने पर मुझे डब्ल्यूसीएफ से यादृच्छिक व्यवहार का अनुभव करना शुरू हो गया।अमान्य JSON को WCF

मेरी वेब सेवा JSON लौटाती है। आईआईएस को पुनरारंभ करने पर सेवा पूरी तरह से वैध JSON लगभग 3 से 5 गुना वापस आ जाएगी। उसके बाद, JSON अमान्य हो जाता है। मैंने निरीक्षण किया है कि फिडलर के माध्यम से तार में क्या आ रहा है और क्लाइंट ऐप (एक एडोब एयर ऐप जो सेवा कहता है) और सर्वर पर ही अपने स्वयं के लॉग पर है।

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

{"responseCode":0,"actionCode":"OK","cdn{"responseCode":0, "actionCode"..... 

नोट कैसे "प्रतिक्रिया कोड" (जो केवल JSON उत्तर की शुरुआत में दिखाई देनी चाहिए) अचानक आगे पर JSON में फिर से प्रकट होता है:

इस श्रेणीबद्ध उदाहरण देखें। "cdn{"responseCode":0 निश्चित रूप से अमान्य JSON है।

मैंने कई पैच की कोशिश की है। मैंने अलग-अलग ढांचे और विभिन्न संयोजनों के तहत ServiceModelReg.exe और aspnet_regiis.exe चलाने का प्रयास किया है। वही व्यवहार अगर मैं v2.0 के तहत पिछले कोड पर वापस आ जाता हूं और ऐप पूल को वापस v2.0 पर स्विच करता हूं तो सब कुछ ठीक काम करता है।

मुझे विश्वास है कि यह डब्ल्यूसीएफ में गहरी गड़बड़ी होगी। कोई विचार?

इस बिंदु पर मेरे पास एकमात्र सहारा है डब्ल्यूसीएफ को बाहर निकालना और सर्विसस्टैक जैसी किसी चीज़ पर स्विच करना जहां मैं आवश्यक हो तो सभी कोड में डीबग कर सकता हूं।

+1

बफरिंग समस्या किसी प्रकार का है, जहां एक बफर retransmitted है, या जहां एक बफर के बाद संचरण/स्वागत में अवरोध है ऐसा लगता है। –

+4

मुझे इस पर किसी भी मौजूदा मुद्दे से अवगत नहीं है। लेकिन यह समझने में सहायक होगा कि क्या आप रेपो कोड का एक टुकड़ा पोस्ट कर सकते हैं। – Praburaj

+0

क्या आपने असफलता जांचने की कोशिश की है कि यह देखने के लिए कि क्या प्रक्रिया के माध्यम से कुछ भी चल रहा है? क्या आपने जावास्क्रिप्टसेरियलाइज़र() के माध्यम से अपनी वापसी वस्तुओं को चलाने का प्रयास किया है ताकि यह देखने के लिए कि इसमें कोई गड़बड़ है या नहीं? यदि आपको आवश्यकता है तो आप ढांचे में डीबग कर सकते हैं (देखें: http://msdn.microsoft.com/en-us/library/cc667410.aspx)। – Pete

उत्तर

1

एक ही समस्या थी।

<system.serviceModel> 
    <diagnostics> 
     <messageLogging logEntireMessage="true" logMessagesAtTransportLevel="true" maxSizeOfMessageToLog="-1" maxMessagesToLog="-1" /> 
    </diagnostics> 
</system.serviceModel> 

और

<system.diagnostics> 
    <sources> 
     <source name="System.ServiceModel.MessageLogging"> 
      <listeners> 
       <add name="messages" type="MyCustomListener" /> 
      </listeners> 
     </source> 
    </sources> 
</system.diagnostics> 
+0

उपरोक्त कुछ समाधान और टिप्पणियां काम कर सकती हैं। मुझे नहीं पता। मेरा अंतिम समाधान डब्ल्यूसीएफ को छोड़ना और सर्विस स्टैक का उपयोग करना था। अब तक मुझे लगता है कि यह वेब सेवाओं को लागू करने के लिए एक बेहतर वास्तुकला है। –

0

आप सिंगल/PerSession को InstanceContextMode की स्थापना कर रहे हैं: मैं अपने web.config से इन 2 प्रविष्टियों को निकाल कर इस तय?

इस संदर्भ लें ... Mix up two responses