2009-05-15 11 views
6

एक साथ खेलने के लिए मेरे पास एक वेब साइट है जो JQuery AJAX का उपयोग करती है। इस JQuery कोडएएसपी.नेट कुकियलेस सत्र और JQuery AJAX को अच्छी तरह से

$.post("/ajax/getsomedata.aspx", {'id': id }, 
    function(data) 
    { 
     dosomething(data); 
    } 
); 

के साथ जब मैं कुकी-= "false", आईडीRequest.Form में दिखाई देता है के साथ इस चलाते हैं। जब मैं cookieless = "true", आईडीमें अब अनुरोध नहीं है। Form

अद्यतन, मैं

क्या मैं डेटा को सुरक्षित और एक स्वत: रीडायरेक्ट से बचने के लिए Response.ApplyAppPathModifier() के लिए एक कॉल गयी। मैं ** डायगो को छोड़ रहा हूं (और खुद को हटा रहा हूं क्योंकि उनके संदर्भ कुछ चल रहे हैं। मुझे अलग डोमेन का विचार करना पसंद है, लेकिन मैं इसे यहां नहीं कर सकता।

यहां अपडेट किया गया कोड है:

$.post("<%=Response.ApplyAppPathModifier("/ajax/getsomedata.aspx")%>", 
     {'id': id }, 
    function(data)  
    {   
     dosomething(data);  
    } 
); 

MSDNResponse.ApplyAppPathModifier() के बाद से कोई सत्र id सत्र id यदि आप कुकी-सत्र राज्य में हैं कहते हैं, और अनछुए URL मिलता है अगर तुम नहीं कर रहे हैं।

के अनुसार, एएसपी.नेट एक नया सत्र बनाता है और एक रीडायरेक्ट करता है (इस प्रकार किसी को अलग करना फॉर्म डेटा)।

उत्तर

2

में कोड नहीं किया है, मैंने हाल ही में एक ही समस्या के साथ संघर्ष किया है। यह कुकीज सत्रों का उपयोग करने में चार दोषों में से एक है। सर्वर को मारते समय अनुरोध फिर से लिखा जाता है और अनुरोध चर गिरा दिए जाते हैं। ASP.Net का उपयोग कर WebServices और POST अनुरोध का उपयोग करते समय यह बेहद दर्दनाक हो सकता है। जीईटी का उपयोग करते समय यह ठीक काम करता है।

आपको सामान्य पोस्ट का उपयोग करके एक ही समस्या होगी। एक लेख here है जो बताता है कि यह कैसे किया जा सकता है। This एमएसडीएन लेख भी लंबाई में कमियों पर चर्चा करता है।

सबसे अच्छा समाधान अपनी सेवाओं को एक अलग डोमेन या आईआईएस वर्चुअल साइट पर कुकीज सत्र का उपयोग न करने के लिए है।

कुकीज सत्रों के साथ प्रपत्र प्रमाणीकरण का उपयोग करना भी एक दिलचस्प चुनौती है।

0

आपको अपने अनुरोध में सत्र टोकन शामिल करना होगा। एएसपी.Net इसे यूआरएल या छिपे हुए फॉर्म फ़ील्ड में जोड़ना होगा। इसे पकड़ो और इसे jquery पैरामीटर ऑब्जेक्ट जोड़ें। जहां तक ​​मैं कह सकता हूं कि मैंने कभी भी एएसपी.NET

2

मैंने इस समस्या को हल करने के लिए अपना पूरा दिन बर्बाद कर दिया, जबकि यह एक त्वरित फिक्स है।

PageMethod कॉल के दौरान, सत्र आईडी अनुरोध URL के साथ पारित नहीं किया जा रहा है, इसलिए एक नया session_start ईवेंट निकाल दिया जा रहा है। हमें pagemethod पर कॉल करने से पहले सटीक अनुरोध पथ सेट करने की आवश्यकता है, ताकि नया सत्र प्रारंभ ईवेंट निकाल दिया न जाए।

if ('<%= HttpContext.Current.Session.IsCookieless %>==True') { 
    //need to pass session id in request path 
    PageMethods.set_path('<%= System.Web.Configuration.WebConfigurationManager.AppSettings("WebRoot") %>(S(<%=Session.SessionID%>))/secure/PageName.aspx'); 
} 
PageMethods.PageMethodName(param1,param2, CallSuccess, CallFailed); 
संबंधित मुद्दे