2009-05-26 13 views
13

मैं एक HTTP हैंडलर पर डेटा का एक बड़ा हिस्सा भेजने की कोशिश कर रहा हूं। मैं यूआरएल लंबाई सीमा के कारण जीईटी का उपयोग करके इसे नहीं भेज सकता इसलिए मैंने इसे पोस्ट करने का फैसला किया। समस्या यह है कि मैं मूल्यों पर नहीं मिल सकता। context.Request.Form दिखाता है कि इसमें 0 आइटम हैं। तो क्या कोई तरीका है कि मैं डेटा को HttpHandler पर पोस्ट कर सकता हूं?एएसपी.NET HttpHandler को डेटा कैसे पोस्ट करें?

+0

उपयोग कर सकते हैं आप अनुरोध करने के लिए उपयोग कर रहे हैं क्या? HttpWebRequest? –

+0

मैं jquery –

+0

का उपयोग कर अजाक्स कॉल कर रहा हूं क्या आप अनुरोध पक्ष पर जो कर रहे हैं उसका कोड नमूना प्रदान कर सकते हैं? – Deeksy

उत्तर

1

जो पोस्ट डेटा आप अपने HTTP हैंडलर को भेज रहे हैं वह क्वेरीस्ट्रिंग प्रारूप a=b&c=d में होना चाहिए। और आप इसे Request["a"] (b वापस कर देंगे) का उपयोग कर सर्वर-साइड पर पुनर्प्राप्त कर सकते हैं, और इसी तरह।

+0

क्षमा करें, लेकिन मुझे यह नहीं मिलेगा। डेटा कैसे होगा यदि मैं इसे एक क्वेरीस्ट्रिंग में भेजता हूं तो पोस्ट किया गया: एस। क्या आप कुछ और बता सकते हैं कि आप क्या सुझाव दे रहे हैं? अगर आप कह रहे हैं कि मुझे एक क्वेरीस्ट्रिंग बनाना चाहिए और उसे मेरे यूआरएल में जोड़ना चाहिए तो यूआरएल की लंबाई सीमा के कारण काम नहीं करेगा –

+0

मुझे लगता है कि वह URL को एन्कोड करने का मतलब है, एम्पर्सेंड (&) द्वारा सीमित, अनुरोध क्वेरी को छोड़कर, क्वेरी स्ट्रिंग में, यूआरएल में नहीं। JQuery को इसे आपके लिए स्वचालित रूप से संभालना चाहिए। –

11

कुछ कोड देखने के लिए इस मुद्दे का निदान करने में मदद मिलेगी। क्या आपने ऐसा कुछ करने की कोशिश की है?

jQuery कोड:

string key1 = context.Request.Form["key1"]; 

तुम भी अनुरोध प्रकार ProcessRequest में (जाँच कर सकते हैं) विधि डिबग करने के लिए:

$.post('test.ashx', 
     {key1: 'value1', key2: 'value2'}, 
     function(){alert('Complete!');}); 

फिर अपने ProcessRequest() विधि में, तुम क्या करने में सक्षम होना चाहिए मुद्दा।

if(context.Request.RequestType == "POST") 
{ 
    // Request should have been sent successfully 
} 
else 
{ 
    // Request was sent incorrectly somehow 
} 
2

मैं एक ही समस्या हो रही थी, और अंततः पता लगा है कि "json" के रूप में सामग्री प्रकार की स्थापना मुद्दा था ...

contentType: "application/json; charset=utf-8" 

एक पंक्ति है कि कुछ लोकप्रिय ट्यूटोरियल आप जोड़ना सुझाव है $ AJAX कॉल में, और एएसपीएक्स वेब सर्विसेज के साथ अच्छी तरह से काम करता है, लेकिन किसी कारण से यह POST का उपयोग करके एक HttpHandler के लिए नहीं है।

क्वेरी स्ट्रिंग में मूल्यों के बाद से पकड़ना मुश्किल है (वेब ​​में देखी गई एक और तकनीक, हालांकि इसके लिए POST का उपयोग करने के लिए बहुत अधिक समझ नहीं आता है)।

2

मुझे भी यही समस्या थी। यह एक ग्राहक/AJAX समस्या थी। मुझे AJAX कॉल अनुरोध हेडर "कंटेंट टाइप"

application/x-www-form-urlencoded 

इसे काम करने के लिए सेट करना पड़ा।

1

इसी तरह की समस्या का सामना करना पड़ा। सभी मुद्दों को ठीक करने के बाद, web.config में * या GET,POST के रूप में बदलने के लिए एक और चीज आई थी। उसके बाद सब कुछ ठीक काम किया।

<httpHandlers> 
    ... 
    <add verb="*" path="test.ashx" type="Handlers.TestHandler"/> 
</httpHandlers> 
1

पोस्ट क्षेत्रों

HttpContext.Request.Params 

में निहित हैं उन्हें प्राप्त करने के लिए आप

var field = HttpContext.Request.Params["fieldName"]; 
संबंधित मुद्दे