2012-03-31 13 views
5

मैं अपने एएसपी.Net एप्लिकेशन में भुगतान गेटवे एपीआई का उपयोग कर रहा हूं। XSP के साथ मोनो डेवलपमेंट में परीक्षण करते समय एप्लिकेशन काम करता है। जब मैं mod_mono के साथ apache2 में चलाने के लिए इसे कॉन्फ़िगर करता हूं तो कोड टाइमआउट त्रुटि के साथ क्रैश हो रहा है।मोनो अपाचे 2 HttpWebRequest "अनुरोध का समय समाप्त हो गया"

मैं एक्सएसपी के बजाय अपाचे में होस्टिंग के साथ क्या बदल सकता है, इस बारे में सोच रहा हूं।

private string SubmitXml(string InputXml) 
{ 
    HttpWebRequest webReq = (HttpWebRequest)WebRequest.Create(_WebServiceUrl); 
    webReq.Method = "POST"; 

    byte[] reqBytes; 

    reqBytes = System.Text.Encoding.UTF8.GetBytes(InputXml); 
    webReq.ContentType = "application/x-www-form-urlencoded"; 
    webReq.ContentLength = reqBytes.Length; 
    webReq.Timeout = 5000; 
    Stream requestStream = webReq.GetRequestStream(); 
    requestStream.Write(reqBytes, 0, reqBytes.Length); 
    requestStream.Close(); 

    HttpWebResponse webResponse = (HttpWebResponse)webReq.GetResponse(); 
    using (StreamReader sr = new StreamReader(webResponse.GetResponseStream(), System.Text.Encoding.ASCII)) 
    { 
     return sr.ReadToEnd(); 
    } 
} 

कोड लाइन पर क्रैश हो रहा है: Stream requestStream = webReq.GetRequestStream();

त्रुटि दी है:

अनुरोध का समय समाप्त

विवरण वैसे भी नीचे कोड है कि बाहर के समय किया जाता है : HTTP 500. अनुरोध संसाधित करने में त्रुटि।

स्टैक ट्रेस: ​​

System.Net.WebException: अनुरोध System.Net.HttpWebRequest.GetRequestStream पर समय समाप्त() [0x0005f] में /निजी/tmp/monobuild/निर्माण/निर्माण/एक- 2.10.9/एमसीएस/कक्षा/सिस्टम/सिस्टम.Net/HttpWebRequest.cs: 746 TCShared.PxPay.SubmitXml (System.String InputXml) [0x00048] /उपयोगकर्ता/लीम/प्रोजेक्ट/तकनीक/तकनीक से संपर्क/घटक/TCShared/PaymentGateways/Client/PxPay.cs: 85 TCShared.PxPay.GenerateRequest (TCShared.RequestInput इनपुट) पर [0x00015] /उपयोगकर्ता/लीम/प्रोजेक्ट/तकनीक/तकनीक से संपर्क/घटक/टीसी साझा/PaymentGateways/ग्राहक/PxPay.cs: 69

मेरी web.config में मैं अनुरोध का समय समाप्त के रूप में निम्नलिखित है:

<httpRuntime executionTimeout="43200" maxRequestLength="104856" requestValidationMode="2.0" /> 

मैं पर HttpWebRequest लेकिन यह समय समाप्त मान बदलने की कोशिश की है अभी भी समय समाप्त हो रहा है।

ऐसा होने का कारण क्या है और मैं इसे कैसे ठीक कर सकता हूं?

उत्तर

8

मुझे पता चला कि मैं इस समस्या का सामना क्यों कर रहा था। यह अपाचे के उपयोग से पूरी तरह से असंबंधित है।

मैं पोस्टग्रेस्क्ल में डेटाबेस पहुंच के लिए Npgsql का उपयोग कर रहा हूं। Npgsql दो dlls (Npgsql.dll और Mono.Security.dll) के साथ आता है। कुछ अज्ञात कारणों से Mono.Security.dll मोनो पर चलते समय HttpWebRequest को टाइमआउट के कारण बनता है।

वैसे भी मोनो पर चलते समय Mono.Security.dll की आवश्यकता नहीं है क्योंकि यह पहले से ही मोनो फ्रेमवर्क में शामिल है। तो मेरी बिन निर्देशिका से Mono.Security dll को हटाने के बाद HttpWebRequest अब काम कर रहे हैं।

पूर्ण क्रेडिट इस पोस्ट पर http://mono.1490590.n4.nabble.com/The-request-timed-out-at-HttpWebRequest-EndGetResponse-td2218213.html पर जाता है।

+0

अरे, मुझे वही समस्या है जो आपके पास थी, केवल मोनो को हटाना। सुरक्षा ने मेरे लिए इसे ठीक नहीं किया। यह जीत पर दो अलग लिनक्स प्रतिष्ठानों और मोनो में भी संगत है। क्या आपके पास कोई और विचार है कि मुझे और क्या प्रयास करना चाहिए? – Pablote

+0

हाय आप मोनो के एक अलग संस्करण का उपयोग करने का प्रयास कर सकते हैं। मैं अपने मैक पर संस्करण 2.10.8 का उपयोग कर रहा हूं और HttpWebRequest काम कर रहा है। जब मैंने मोनो को संस्करण 2.10.9 में अपग्रेड किया, तो HttpWebRequest ने काम करना बंद कर दिया, इसलिए मुझे 2.10.8 पर डाउनग्रेड करना पड़ा। – startupsmith

+1

मोनो सिक्योरिटी को हटा रहा है।डीएलएल ने मेरे लिए यह तय किया है, लेकिन आपको यह सुनिश्चित करने की ज़रूरत है कि आप इसे जो भी फ़ोल्डर में स्रोत डीएल (परियोजना संदर्भ बिंदु) के साथ-साथ अपने बिन/डीबग | रिलीज फ़ोल्डर से हटा दें, क्योंकि इसे पिछले निर्माण से कॉपी किया गया होगा । – t9mike