2012-02-02 15 views
6

यह हमारे परिदृश्य (जो परक्राम्य नहीं है) है:पारदर्शी GZIP विसंपीड़न

  • WCF बाकी सेवा पर उजागर HTTP IIS7 में की मेजबानी की WebHttpEndpoint का उपयोग कर
  • सभी प्रतिक्रियाओं और पोस्ट अनुरोध डेटा JSON
  • गैर-डब्ल्यूसीएफ वेब क्लाइंट
  • हमने आईआईएस 7 में जेएसओएन प्रतिक्रियाओं के लिए जीजीआईपी संपीड़न को सक्रिय किया है जो ठीक काम करता है।

हम बड़ा JSON पेलोड हम JSON पोस्ट डेटा के लिए ग्राहक के पक्ष GZIP संपीड़न और "Content-Encoding" शीर्षक के लिए "gzip" सेटिंग को क्रियान्वित किया है के साथ पोस्ट अनुरोध कर रहे हैं के बाद से। दुर्भाग्य से आईआईएस बॉक्स के बाहर इसे संभाल नहीं करता है। पोस्ट डेटा डब्ल्यूसीएफ deserializer तक संपीड़ित रूप में पहुंचता है जो निश्चित रूप से एक अपवाद में परिणाम।

मैंने डब्ल्यूसीएफ पाइपलाइन में हुक करने के लिए विभिन्न विस्तार बिंदुओं की कोशिश की है, लेकिन एकमात्र आशाजनक समाधान (ऑपरेशन व्यवहार) काम नहीं करता है क्योंकि डब्ल्यूसीएफ क्लाइंट की अनुपस्थिति में, IOperationBehavior इंटरफ़ेस के ApplyClientBehavior विधि को कभी भी नहीं कहा जाएगा।

अंत अगर एक HttpModule जो काम किया है, लेकिन मैं क्योंकि निम्न चेतावनियां के परिणाम के साथ वास्तव में खुश नहीं हूँ हो जाता है कार्यान्वित में:

  • हालांकि मैं पारदर्शी रूप से सेट करके अनुरोध डेटा को संपीड़ित करने में सक्षम हूँ वर्तमान GttipInputStream की वर्तमान HttpRequest की फ़िल्टर प्रॉपर्टी जो समाधान का केवल आधा है क्योंकि डब्ल्यूसीएफ अनुरोध से बिल्कुल HttpRequest.ContentLength बाइट पढ़ने पर जोर देता है, जो संपीड़ित अनुरोधों के लिए असंपीड़ित पेलोड
  • से कुछ कम अदृश्य कारण से परे बहुत कम होगा मेरी कल्पना माइक्रोसॉफ्ट ने आर के सामग्री लम्बाई को बदलने के हर कानूनी तरीके को अवरुद्ध कर दिया है equest। अंत में मुझे अनुरोध की ContentLength संपत्ति के लिए निजी बैकिंग फ़ील्ड को संशोधित करना पड़ा। जो उत्पादन कोड में आप कुछ नहीं करना चाहते हैं।
  • माइक्रोसॉफ्ट भी यह असंभव असम्पीडित सामग्री की लंबाई जो हमारी वेब ग्राहक की आवश्यकता भी युक्त असम्पीडित सामग्री की लंबाई

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

+0

में एक service side Message inspector

दबाव हटाना के साथ ऐसा करना तो आप इस के लिए एक समाधान मिला सक्षम होना चाहिए? – Snowy

+0

क्या किसी को इसका समाधान मिला है? –

+0

एक ज्ञात समाधान प्रतीत नहीं होता है। –

उत्तर

0

मुझे लगता है कि आप AfterReceiveRequest

+0

एक प्रेषण संदेश निरीक्षक दुर्भाग्यवश पाइपलाइन में बहुत देर से निष्पादित करता है। मैंने पहले ही कोशिश की है और इंस्पेक्टर को पास किया गया संदेश पहले से ही त्रुटि स्थिति में है। –

+0

क्या आपने सेवा पक्ष पर अपने एंडपॉइंट में GZip एन्कोडर का उपयोग करना देखा है http://msdn.microsoft.com/en-us/library/cc138373(v=VS.90).aspx या कम से कम एक संस्करण जो GZip को डीकोड करता है लेकिन सामान्य रूप से एन्कोड करता है –

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