2012-01-05 115 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

相關問題