2012-08-23 13 views
11

मैं इस साइट http://msdn.microsoft.com/en-us/data/gg577610 से रिएक्टिव एक्सटेंशन v1.0 SP1 की स्थायी रिलीज़ डाउनलोड किया है, और मैं एक नेट फ्रेमवर्क 3.5 वातावरण में (विजुअल स्टूडियो 2008) यह उपयोग कर रहा हूँप्रतिक्रियाशील एक्सटेंशन क्यों माइक्रोसॉफ्ट पर माइक्रोसॉफ्ट को HTTP GET भेजता है?

मैं एक परियोजना में रिएक्टिव एक्सटेंशन का उपयोग करने की कोशिश की, और ध्यान दिया कि यह शुरू करने में बहुत धीमी थी। LINQPad के लिए जा रहे हैं, मैं निम्नलिखित "सी # अभिव्यक्ति" में प्रवेश किया:

(new int[0]).ToObservable() 

मैं भी संदर्भित System.Reactive.dll और System.Reactive.Linq नाम स्थान आयात किया। जब मैं इसे चलाता हूं, चलाने के लिए 12 सेकेंड लेता है।

मैंने प्रोसेस मॉनीटर खोला और लिनपैड की निगरानी की। मैंने पाया कि यह 124.155.222.226 या 124.155.22.59 पर एक HTTP अनुरोध भेज रहा है। (जब आप इसे खोलते हैं तो एफवाईआई लिंकपैड स्वयं 157.55.161.150 तक घर पर फोन करता है)। WireShark के साथ, मैं यह

http://crl.microsoft.com/pki/crl/products/MicCodSigPCA_08-31-2010.crl 

एक HTTP GET अनुरोध भेज रहा है किसी को भी पता है क्यों यह इस तरह घर फोन किया जाता है जब कोड Reactive.Extensions साथ संकलित देखा? इसके अलावा, इसे बंद करने का कोई तरीका है, क्योंकि आवेदन को विचलित करते समय घर पर फोन करने में 12 सेकंड की देरी (और उत्पादन में चल रही) विशेष रूप से असुविधाजनक है।

नोट: जब आप कोड को संकलित करते हैं तो यह घर जैसा फ़ोन करता है (या जेआईटी डिबगिंग करते समय इसे संकलित करता है)। यह वास्तव में रन-टाइम व्यवहार नहीं है जो ऐसा प्रतीत होता है।

+4

सीआरएल - प्रमाणपत्र रद्द करने की सूची। ऐसा लगता है कि यह किसी भी तरह से प्रमाण पत्र की जांच करता है और इसके लिए यह रद्द करने के लिए उस निरस्तीकरण सूची के नवीनतम संस्करण की आवश्यकता होती है कि प्रमाणपत्र अभी भी वैध है या नहीं। –

+0

लेकिन यह जांचने की आवश्यकता क्यों है कि प्रमाणपत्र IObservable वाले कोड को संकलित करने के लिए मान्य है या नहीं? ऐसा लगता है कि HTTP अनुरोध करने के लिए गलत समय और स्थान लगता है। –

+0

कोई भी jab @ericlippert – Will

उत्तर

7

ऐसा लगता है कि आरएक्स असेंबली प्रमाणीकरण-हस्ताक्षरित है। आईएमओ, यह फ्रेमवर्क 3.5 या उससे पहले के लिए निर्मित .NET असेंबली प्रमाणीकरण-हस्ताक्षर की गलती है - क्योंकि सीएलआर असेंबली पढ़ने से पहले प्रमाणीकरण निरस्तीकरण सूची की जांच करता है, कुछ सेकंड में चीजों को सर्वोत्तम रूप से देरी करता है (या 30 सेकंड सेकंड सबसे खराब है यदि आपका इंटरनेट कनेक्शन समय पूरा हुआ)।

यह गलतफहमी सीएलआर 4 में तय की गई थी: प्रमाणीकरण हस्ताक्षर केवल मांग पर ही सत्यापित किए जाते हैं, हर बार जब आप असेंबली लोड नहीं करते हैं।

(यही कारण है LINQPad निष्पादन के फ्रेमवर्क 3.5 संस्करण एथेंटिकोड-हस्ताक्षरित नहीं है कि के लिए है।)

शायद तुम रिएक्टिव विधानसभाओं के 3.5 निर्माण से एथेंटिकोड हस्ताक्षर निकालने पर विचार कर आरएक्स टीम पूछ सकते (मान लीजिए यह वास्तव में समस्या है)।

+0

यह डीआईडी ​​काम, जैसा कि यह था। मैंने यहां http://social.msdn.microsoft.com/Forums/en-US/rx/thread/00c9718b-5962-42ad-b02d-f170dc91ed36 पूछा, और http://blogs.technet.com/b पर निर्देशित किया गया था /markrussinovich/archive/2009/05/26/3244913.aspx –

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