2012-01-11 9 views
8

मैं नियंत्रक पर प्रमाणीकरण कार्रवाई को कॉल करने में सक्षम होना चाहता हूं और यदि यह सफल होता है, तो सत्र में प्रमाणीकृत उपयोगकर्ता विवरण संग्रहीत करें।मैं RestSharp और ASP.NET सत्रों के साथ कुकी कंटेनर का उपयोग कैसे करूं?

हालांकि, मुझे यकीन नहीं है कि सत्र के अंदर अनुरोधों को कैसे रखा जाए क्योंकि मैं एक अलग क्लाइंट के रूप में RestSharp का उपयोग कर रहा हूं। मुझे किसी भी तरह से सफल प्राधिकरण पर सर्वर से एक महत्वपूर्ण वापस पाने की आवश्यकता है और फिर प्रत्येक भावी कॉल के लिए, सत्र में संग्रहीत कुंजी के साथ कुंजी की जांच करें।

मैं कैसे सुनिश्चित करूं कि RestSharp में RestClient कुकी सेट के साथ सभी भविष्य के अनुरोधों को सही ढंग से सेवा कॉल के अंदर भेजता है, सत्र चर सही ढंग से पुनर्प्राप्त किया जा सकता है?

मैं HttpFactory के साथ कुकी कंटेनर को देख रहा हूं लेकिन इस पर कहीं भी कोई प्रलेखन प्रतीत नहीं होता है।

+0

अगर आप जटिल कुकी प्रबंधन की जरूरत नहीं है: (मैं आसानी के लिए Jaffas चर प्रयुक्त)। –

उत्तर

4

मैंने अंत में यह काम किया। मूल रूप से एक कुकी कंटेनर बनाएं, फिर कुकी कंटेनर में प्रतिक्रिया से सत्र कुकी जोड़ें। इसके बाद सभी भविष्य के अनुरोधों में यह कुकी शामिल होगी।

var sessionCookie = response.Cookies.SingleOrDefault(x => x.Name == "ASP.NET_SessionId"); 
if (sessionCookie != null) 
{ 
    _cookieJar.Add(new Cookie(sessionCookie.Name, sessionCookie.Value, sessionCookie.Path, sessionCookie.Domain)); 
} 
24

अगर किसी को भी ऐसी ही समस्या हो रही है, तो कृपया ध्यान दें कि उपर्युक्त "प्रत्येक अनुरोध के बाद मेरी कुकीज़ को स्टोर करें" समस्या के लिए उपरोक्त आवश्यक नहीं है। जाफस कार्यों के ऊपर दृष्टिकोण, लेकिन आप बस अपने RestClient पर कुकीस्टोर संलग्न कर सकते हैं और कुकीज़ को स्वचालित रूप से संग्रहीत किया जा सकता है। मुझे पता है कि यह सभी के लिए समाधान नहीं है, क्योंकि आप केवल समर्पित कुकीज़ को स्टोर करना चाहते हैं। दूसरी तरफ यह एक आरईएसटी ग्राहक का परीक्षण करने के लिए आपके जीवन को आसान बनाता है! स्वीकार किए जाते हैं जवाब चेकआउट @PeterBranforn से समाधान है, यह आसान है के अलावा

 CookieContainer _cookieJar = new CookieContainer(); 
     var client = new RestClient("http://<test-server>/letteron"); //test URL 
     client.CookieContainer = _cookieJar; 
+0

मैंने RestClient को "http: // localhost /" गुजरने के लिए बनाया है और यह काम नहीं करता है (कंटेनर को कुकी मिल गई है, लेकिन इसे आगे नहीं पारित किया गया था)। मैंने इसे "http: //127.0.0.1/" में बदल दिया और सभी ठीक काम किया। जाफ के समाधान दोनों मामलों में काम किया। –

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