2012-03-22 9 views
13

में एक वेब सेवा को कॉल करते समय सत्र शून्य है, मेरे पास एक लॉगिन क्लास है जिसमें एक फ़ंक्शन है: isCorrect() जो उपयोगकर्ता नाम और पासवर्ड को दो विशेषताओं के रूप में लेता है और एएसपीनेट वेब सेवा AJAX का उपयोग करने की अनुमति देता है।ASP.NET C#

LoginService.cs

public Login CorrectLogin(string username, string password) 
{ 
    Login thisLogin = Login.isCorrect(username, password); 
    int thisLoggedinUserID = thisLogin.LoggedinUserID; 

    if (thisLoggedinUserID != 0) 
    { 
     Session["loggedinUser"] = thisLoggedinUserID; 
    } 

    return thisLogin; 
} 

जब मैं Session["loggedinUser"] = thisLoggedinUserID का मूल्य इस त्रुटि जमा कर लेता सेट करना चाहते हैं:

Object reference not set to an instance of an object.

मैं नहीं समझ सकता समाधान क्या है।

+0

क्या आप अपवाद स्टैक ट्रेस पोस्ट कर सकते हैं? – Dai

+1

क्योंकि इसकी त्रुटि webservice क्लास पर होती है केवल मुझे पता चलता है कि यह है: loginService.CurrectLogin (स्ट्रिंग उपयोगकर्ता नाम, स्ट्रिंग पासवर्ड) में f: \ ... \ App_Code \ LoginService.cs: line 19 – mhesabi

उत्तर

25

वेब सेवाओं में डिफ़ॉल्ट रूप से सत्र नहीं है। WebMethod में एक विशेषता जोड़ें ..

[WebMethod(EnableSession=true)] 
public Login CurrentLogin ..... 
+0

धन्यवाद दोस्त है। मेरी समस्या हल हो गई। – mhesabi

1

ऐसा लगता है कि सत्र वस्तु शून्य है। क्या आप वाकई अपने आवेदन में सत्रों को चालू कर रहे हैं?

+0

मुझे यह कैसे पता चलेगा कि यह चालू है या नहीं? उदाहरण के लिए यह मेरा web.config mhesabi

0

यहां लॉग इन करें और उपयोग पर एक अच्छा ट्यूटोरियल

http://www.mikesdotnetting.com/Article/75/Simple-Login-and-Redirect-for-ASP.NET-and-Access

इसकी नहीं मुश्किल, मैं अपने अपने स्वयं के प्रदाता बनाने लगता है। कोडप्लेक्स आदि में भी एक गुच्छा है।

0

सत्र वेब सेवाओं C# में अच्छा काम नहीं करता है। कुछ महीने पहले मैं आपके जैसा ही करूंगा, लेकिन मैं सिस्टम बदलता हूं। अब मैं एक टोकन पहचान (एक दृढ़ता परत का उपयोग कर) का उपयोग कर रहा हूं: सबसे पहले आपको लॉगिन करना होगा, और हर बार जब आप कॉल करेंगे, तो आपको टोकन को एक पैरामीटर या साबुन हेडर या इस तरह कुछ भेजना होगा। मैं हमेशा एसएसएल का उपयोग करने की सिफारिश करता हूं।

एक और विकल्प है SOAPHeader में लॉगिन और पासवर्ड के साथ हर वेब सेवा कॉल की पहचान करना, और उपयोगकर्ता-कॉल को स्वत: या नहीं करने के लिए SOAPExtension का उपयोग करना है। यह विधि केवल SOAP प्रोटोकॉल संचार के लिए मान्य है, HTTP पोस्ट या HTTP GET के लिए नहीं।

उम्मीद है कि इससे मदद मिलती है।

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