2009-12-16 16 views
14

विशेष रूप से, सत्र चर। मेरे पास एएसपी.नेट एमवीसी प्रोजेक्ट में एक .ashx है जो किसी उपयोगकर्ता को प्रदर्शित करने के लिए कुछ छवि डेटा खींच रहा है, और मुझे सत्र में संग्रहीत ऑब्जेक्ट तक पहुंचने में सक्षम होना चाहिए। नियंत्रकों से मैं ऑब्जेक्ट को ठीक कर सकता हूं, लेकिन मेरे एएसएक्स पेज में, संदर्भ। सत्र शून्य है। कोई विचार? धन्यवाद!एएसपी.नेट एमवीसी में नियंत्रकों के बाहर HttpContext तक कैसे पहुंचे?

यहां एक उदाहरण है जो मैं करने की कोशिश कर रहा हूं ... संदर्भ। सत्र हमेशा शून्य हो रहा है।

private byte[] getIconData(string icon) 
    { 
     //returns the icon file 
     HttpContext context = HttpContext.Current; 

     byte[] buffer = null; 

     //get icon data 
     if (context.Session["tokens"] != null) 
     { 
      //do some stuff to get icon data 
     } 
    } 
+1

डुप्लिकेट: http://stackoverflow.com/questions/1240732/how-can-i-use-session-variable-in-an-httphandler –

+0

नहीं वास्तव में। .. मेरी समस्या यह है कि मैं अपने एमवीसी नियंत्रक से संग्रहीत मेरे सत्र चर का उपयोग नहीं कर सकता। जब मैं नियंत्रक के बाहर सत्र तक पहुंचने का प्रयास करता हूं, तो यह सिर्फ शून्य हो जाता है। – Arthurdent510

+0

आईएचटीपी हैंडलर में आपका कोड नहीं है? यदि हां, तो यह वही समस्या और समाधान है। –

उत्तर

2

ठीक है, तो क्या मैं क्या करने वाले समाप्त हो गया .... मेरी ashx फ़ाइल में, मैं IReadOnlySessionState इंटरफ़ेस में शामिल किया और उसके सत्र स्थिति ठीक का उपयोग करेंगे। तो यह कुछ इस तरह दिखता ...

public class getIcon : IHttpHandler, IReadOnlySessionState 
17

अपने कोड के System.Web विधानसभा आयात करना होगा और फिर आप कुछ इस तरह कर सकते हैं:

HttpContext context = HttpContext.Current; 

return (User)context.Session["User"]; 

संपादन:

Dude, मैंने किया था यहाँ कुछ परीक्षण और यह मेरे लिए काम करता है, इस तरह कुछ कोशिश करें:

सत्र चर सामग्री प्राप्त करने के लिए एक सहायक वर्ग बनाएं, इसे आयात करना होगा System.Web विधानसभा:

public class TextService 
    { 
     public static string Message { 
      get 
      { 
       HttpContext context = HttpContext.Current; 
       return (string)context.Session["msg"]; 
      } 
      set 
      { 
       HttpContext context = HttpContext.Current; 
       context.Session["msg"] = value; 
      } 
     } 
    } 

फिर अपने नियंत्रक में आपको क्या करना चाहिए कुछ की तरह:

return TextService.Message; 

दे:

TextService.Message = "testing the whole thing"; 
return Redirect("/home/testing.myapp"); 

और अपने अन्य वर्गों में आप सहायक वर्ग कॉल कर सकते हैं यह एक कोशिश करो।

+0

यह अभी भी कह रही है एक नियंत्रक में कई अलग अलग सत्र चर उपयोग करने में सक्षम होने के बावजूद है कि सत्र रिक्त है। – Arthurdent510

+0

आपने सत्र चर बनाया है? क्या आप यहां कुछ कोड दिखा सकते हैं? – Alaor

+0

आप सत्र ["टोकन"] चर कहां सेट करते हैं? – Alaor

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