2010-12-22 11 views
11

के तहत एसएसएल कनेक्शन पर टाइमआउट द्वारा HttpWebRequest.GetRequestStream() ब्रेक करता है मेरे पास एक सी # विंडोज़ एप्लिकेशन (नेट 3.0 फ्रेमवर्क) है जो HttpWebRequest का उपयोग करके PHP वेब सेवा पर कॉल करता है।विंडोज 7/Vista

में 7 विन & विस्टा, अगर कॉल (अर्थात http://) गैर- SSL के माध्यम से किया जाता है, कोड ठीक काम करता है। जब कॉल को एसएसएल (https :) लिंक के लिंक पर कॉल करने के लिए बदला जाता है, तो यह HttpWebRequest.GetRequestStream() पर समाप्त होता है। यह हर बार होता है।

जब यह वही एप्लिकेशन पर चलाया जाता है तो Windows XP मशीन यह HTTP या HTTPS url का उपयोग करने के साथ ठीक काम करता है।

कोड में सभी सर्वर प्रमाणपत्र कोड स्वीकार करते हैं। इसके अलावा, मैंने System.Net logging जोड़ा है। यह लॉग लिखता है लेकिन चूंकि पैकेट एन्क्रिप्ट किए जाते हैं, इसलिए आप टाइमआउट निरस्त कथन को छोड़कर वास्तव में बहुत कुछ नहीं देखते हैं।

मैंने फिडलर की भी कोशिश की है लेकिन फिर से एन्क्रिप्टेड पैकेट के साथ, मुझे बहुत कुछ नहीं दिख रहा है। बीटीडब्ल्यू, जब मैं ऐप को डिक्रिप्ट करने के लिए फिडलर 2 का उपयोग करने का प्रयास करता हूं तो यह सफल नहीं हुआ है।

वैसे भी, किसी भी मदद की सराहना की जाएगी। धन्यवाद।

मैं जोड़ना होगा:

  • मैं पोर्ट में टेलनेट कर सकते हैं
  • मैं प्रशासक
  • मैं विन XP संगतता मोड (कोशिश कर कुछ भी) की कोशिश की है
  • मैं के रूप में एप्लिकेशन चला की कोशिश की है कनेक्ट कोड को एक साधारण स्टैंड-अलोन ऐप
+0

आप pastebin.com पर टाइमआउट दिखा logile पेस्ट कर सकते हैं? – feroze

उत्तर

9

यह त्रुटि किसी नए सर्वर पर पहुंचने वाली वेबसाइट माइग्रेट करने के बाद एक काम कर रहे सी # अनुप्रयोग में फंस गई, और यह सर्वर-साइड समस्या का संकेत दिया। दरअसल, हमने अंततः प्रमाणपत्र में पंजीकृत डोमेन नाम से मेल खाने के लिए अपाचे कॉन्फ़िगरेशन फ़ाइल में "सर्वर नाम" मान सेट करके इस समस्या का समाधान किया।

ServerName www.secure.mydomain.com 

प्रमाण पत्र के लिए पंजीकृत किया गया था: (। एक और मंच उल्लेख किया कि "सर्वर का" सेटिंग भी काम करेगा)

अधिक विशेष रूप से, एसएसएल साइट के लिए httpd.conf फ़ाइल VirtualHost अनुभाग में निम्न था secure.mydomain.com, और जिस URL को हम एक्सेस कर रहे थे वह भी https://secure.mydomain.com/test.html था।

तो बस conf फ़ाइल के बाद और पुन: प्रारंभ करने के लिए अपाचे था चाल बदल रहा है:

ServerName secure.mydomain.com 

निम्नलिखित भी होता है काम किया, सबसे अधिक संभावना:

ServerName www.secure.mydomain.com 
ServerAlias secure.mydomain.com 

यहाँ कुछ अतिरिक्त है पृष्ठभूमि जानकारी, भविष्य के संदर्भ के लिए:

टी में हमने दो त्रुटियों को देखा वह सिस्टमNet.trace.log थे:

System.Net.Sockets Error: 0 : [4316] Exception in the 
    Socket#18796293::Receive - A blocking operation was 
    interrupted by a call to WSACancelBlockingCall 
System.Net Error: 0 : [4316] Exception in the 
    HttpWebRequest#35191196:: - The operation has timed out 

यहाँ सब बातें हम कोशिश की जो समस्या ठीक नहीं होती हैं:

  • (यह आवश्यक है)
  • अपाचे में SSL प्रमाणपत्र जारीकर्ता के मध्यवर्ती प्रमाणपत्र को स्थापित करने से (कोई प्रभाव नहीं)
  • वेब अनुरोध में उपयोगकर्ता एजेंट बदलने के
  • बदलते सर्वर साइड और क्लाइंट-साइड समय बहिष्कार और स्मृति सीमा (कोई प्रभाव नहीं) एक स्थैतिक पृष्ठ के साथ
  • परीक्षण (कोई effec टी) अन्य https साइटों के साथ
  • परीक्षण (वे ठीक काम किया)
  • विश्वसनीय प्रमाणपत्रों की दुकान में प्रमाणपत्र जोड़ने (कोई प्रभाव नहीं)
  • खरीद और किसी भिन्न प्रमाणपत्र जारीकर्ता से कोई प्रमाणपत्र इंस्टॉल (कोई प्रभाव नहीं)
  • किसी ज्ञात कार्य सर्वर से वर्चुअल होस्ट .conf फ़ाइलों को समस्या सर्वर से तुलना करें (इससे हमें समस्या हल करने का मौका मिला)

https URL को ओपेरा, आईई 8 और फ़ायरफ़ॉक्स में बिना किसी समस्या के खोला जा सकता है। विंडोज़ के लिए डब्लूजीईटी ने एक अवैध प्रमाणपत्र के बारे में शिकायत की, लेकिन फिर, डब्लूजीईटी एक पुराना एप्लीकेशन है और कई प्रमाणपत्रों पर भरोसा नहीं करता है।

सी # क्लाइंट अनुप्रयोग Windows XP के तहत काम किया, लेकिन नहीं Windows 7 या Windows Vista में। ऐसा प्रतीत होता है कि प्रमाण पत्र को सत्यापित करने के बारे में विंडोज 7 और Vista अधिक आक्रामक हैं। जब यह विफल रहता है तो वे एक सूचनात्मक त्रुटि संदेश प्रदान नहीं करते हैं, और इसके बजाय बस एसएसएल हैंडशेक के दौरान समय निकालते हैं।

+0

समस्या को हल करने के लिए धन्यवाद शैलेश। इसे अभी तक अपडेट करने का मौका नहीं मिला था। –

+0

यह पैसे पर सही था। क्या एक बहुत भ्रामक त्रुटि संदेश है। –

+0

इस प्रतिक्रिया के लिए धन्यवाद, यह हल किया गया कि हमारे लिए एक बहुत परेशान समस्या क्या थी। हमारे पास ऐसी मशीनें थीं जो विंडोज अपडेट के साथ अद्यतित थीं जिनके .NET प्रोग्राम वेब सर्वर से संपर्क करते समय समय समाप्त हो रहे थे। मशीनें जिन्हें पहले (लगभग) जुलाई 2012 से अपडेट नहीं किया गया था ठीक काम कर रहे थे। तो एक विंडोज अपडेट है जो इस अवधि के आसपास कभी-कभी व्यवहार को संशोधित करता है। अपाचे वेब सर्वर पर 'सर्वरनाम' मान को ठीक करने से हमारे लिए समस्या हल हो गई। –

0

शायद एसएसएल प्रमाणपत्र एक सीआरएल को संदर्भित करता है जो टी लेता है लाने के लिए लंबा लंबा?

+0

आप सीआरएल की जांच को अक्षम कर सकते हैं। ServicePointManager सेट करें। चेक प्रमाणपत्र प्रमाणन सूची = झूठी। अगर आप वायरशर्क का उपयोग करते हैं तो आप देख सकते हैं कि टाइमआउट सीआरएल या पूरी तरह से कुछ और क्यों है। यदि आप पेस्टबिन पर अपना system.net लॉग पोस्ट करते हैं तो मैं भी एक नज़र डाल सकता हूं। – feroze

+0

फीडबैक दोस्तों के लिए धन्यवाद। मैं इसकी सराहना करता हूं। शैलेश (हम्बाड्स) और मैंने इसे सर्वर पर प्रमाण पत्र सेटअप समस्या होने के लिए ट्रैक किया। जवाब ऊपर है। एक बार फिर धन्यवाद! –