2012-01-05 54 views
2

我尝试使用webservices构建基于客户端的桌面应用程序。当我尝试通过会话发送List时遇到问题。即使会话已创建,但返回会话的引用不再存在。C#应用程序和asp.NET会话

[WebMethod(EnableSession = true)] 
public void dodajdolisty(string login) { 
    bool jest = false; 

    if (Session["uzytkownicy"] != null) { 
     listaOsob = (List<string>)Session["uzytkownicy"]; 

     foreach (string s in listaOsob) { 
      if (s == login) { jest = true; break; } 
     } 

     if (! jest) { 
      listaOsob.Add(login); 
      Session["uzytkownicy"] = listaOsob; 
     } 
    } 
    else { 
     listaOsob.Add(login); 
     // the debugger shows that the session has been created 
     Session["uzytkownicy"] = listaOsob; 
    } 
} 

public List<string> pobierzzlisty() { 
    List<string> list = new List<string>(); 
    list = (List<string>)Session["uzytkownicy"]; // session is null 

    return list; 
} // null 

我该如何解决这个问题?

+1

哪里'dodajdolisty()'和'方法pobierzzlisty()'被称为? PS:**爱**这些名字 – Yuck 2012-01-05 13:22:00

+0

例如在这里(C#应用程序使用WSDL)'web.dodajdolisty(“ddddd”); foreach(web.pobierzzlisty()中的字符串s)///错误{ listView1.Items.Add(s); // web是由WSDL.exe生成的类 }' – quba88 2012-01-05 13:25:25

+2

不建议将不可序列化的对象放入会话集合中。它仅适用于内存中会话状态,但不适用于SQL Server会话状态提供程序,因为它不能被序列化。这只是一个警告,所以如果你出于任何原因计划稍后更改会话状态提供程序。 – Chris 2012-01-05 13:26:59

回答

1

我想你错过了在客户端应用程序添加的CookieContainer,试试这个

MyWebService ws= new MyWebService(); 
ws.CookieContainer = new System.Net.CookieContainer(); 
+0

现在非常感谢它的工作原理 – quba88 2012-01-05 15:04:33

相关问题