2011-11-01 17 views
6

पर कॉल करते समय सत्र बनाए रखें मैं केवल प्रमाणित उपयोगकर्ता के लिए वेब सेवा से कनेक्ट करने के लिए क्लाइंट ऐप का उपयोग कर रहा हूं। यहाँ सबसे सरल उदाहरण है:
मेरे वेब सेवा कोड:एएसएमएक्स वेब सेवा

public class TestService : System.Web.Services.WebService 
{ 
    [WebMethod(EnableSession = true)] 
    public string WelcomeMsg() 
    { 
     return "Hello: " + Session["UserName"] + "! Welcome to our store."; 
    } 

    [WebMethod(EnableSession = true)] 
    public void SetUserName(string sName) 
    { 
     Session["UserName"] = sName; 
    } 
} 

यहाँ है क्लाइंट ऐप पर अपने कोड (विंडोज फार्म, नहीं वेब आधार):

private void btnSetName_Click(object sender, EventArgs e) 
{ 
    TestService.TestService ws = new TestService.TestService(); //Create a web service 
    MainForm.m_ccSessionInfo = new System.Net.CookieContainer(); //Create a CookieContainer 
    ws.CookieContainer = MainForm.m_ccSessionInfo; //Set CookieContainer of the web service 
    ws.SetUserName(txtUserName.Text); //Set value of session 
    ws = null; 
} 

private void btnWelcome_Click(object sender, EventArgs e) 
{ 
    TestService.TestService ws = new TestService.TestService(); //Create a web service 
    ws.CookieContainer = MainForm.m_ccSessionInfo; //Set CookieContainer back 
    string sWelcome = ws.WelcomeMsg(); //Get value from session property 
    ws = null; 

    System.Diagnostics.Debug.WriteLine(sWelcome); 
} 

मेरे उदाहरण में MainForm.m_ccSessionInfo एक है स्थैतिक सदस्य, मैं इस में सत्र कुकीज़ मूल्य रखना चाहता हूं!
हालांकि, यह काम नहीं करते :(। Ws.WelcomeMsg() हमेशा एक खाली स्ट्रिंग लौटाने है।

उत्तर

8

ओह, मुझे लगता है कि मैं सिर्फ इस समस्या के लिए समाधान मिल गया है। CookieContainer सर्वर द्वारा बनाई गई है और ग्राहक अनुप्रयोग में रखा जाना चाहिए। btnSetName_Click पर, मैं

बदल 10

में
ws.CookieContainer = new System.Net.CookieContainer(); //Create a CookieContainer 
MainForm.m_ccSessionInfo = ws.CookieContainer; //Keep CookieContainer for later using 

और यह अब अच्छी तरह से काम करता है! आप सब का धन्यवाद।

+0

YESSSSSS !!!! मुझे एएसएमएक्स वेब सेवा के लिए कुछ विरासत कोड बनाए रखना है, और इससे मेरी समस्या ठीक हो गई है! धन्यवाद! –

1

कोशिश

private void btnWelcome_Click(object sender, EventArgs e) 
{ 
    TestService.TestService ws = new TestService.TestService(); //Create a web service 
    ws.SetUserName(txtUserName.Text); 
    string sWelcome = ws.WelcomeMsg(); 
    System.Diagnostics.Debug.WriteLine(sWelcome); 
} 

जब बुला btnSetName_Click विधि और btnWelcome_Click क्लिक जाले ervice अपने reqwests पर विचार नीचे नए सत्र के रूप में।

+0

"जब btnSetName_Click विधि को कॉल करते हैं और btnWelcome_Click क्लिक करें webs ervice अपने reqwests नए सत्र के रूप में विचार करें।" हां, यह मेरी समस्या है, मैं क्लाइंट ऐप की सभी गतिविधियों के लिए सत्र रखना चाहता हूं। जवाब देने के लिए धन्यवाद। – huynhtuanh

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