ASP.NET webservis klient

Odpowiedz Nowy wątek
2012-01-04 19:18

Rejestracja: 11 lat temu

Ostatnio: 5 lat temu

0

Buduję klienta desktopowego opartego na webservisie (klient chatowy). Mam problem z przesyłaniem listy przez sesje tzn. pomimo że sesja została utworzona, przy ponownym odwołaniu się do niej ona już nie istnieje po mimo że działa w przeglądarce co może być przyczyną, zanikania sesji?

tworzenie sesji

[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);
            Session["uzytkownicy"] = listaOsob;////debuger pokazuje że sesja została utworzona

        }
    }
pobieranie
<code class="c#">

 public List<string> pobierzzlisty()
        {

               List<string> list=new List<string>();
             list = (List<string>)Session["uzytkownicy"];////sesja jest null

                return list;}///null
W znaczniku nie pisz code=c# tylko code=csharp - Sarrus 2012-01-07 00:27

Pozostało 580 znaków

Gosc
2012-01-04 20:11
Gosc
0

Hej,

Probowales dodac "static" do metody dodajdolisty() ? To w teorii powinno dac dostep do Sesji w obrebie tego samego procesu.

Pozostało 580 znaków

2012-01-04 22:44

Rejestracja: 11 lat temu

Ostatnio: 5 lat temu

0

Nic z tego wywala mi błąd (nawet się nie kompiluje), odnośnie tego że Session jest nie statyczny
nie działa też to:

 HttpContext.Current.Session["test"] = "testString";
edytowany 1x, ostatnio: quba88, 2012-01-04 23:06

Pozostało 580 znaków

2012-01-07 12:37

Rejestracja: 11 lat temu

Ostatnio: 5 lat temu

0

Dobra udało mi się to załatwić to należało tylko dodać w kliencie następującą linijkę

 web.CookieContainer = new System.Net.CookieContainer(); 

Teraz inne pytanie jak zamienić metodę pobierzzlisty(), tak aby zwracała string[]

 public string [] pobierzzarray()
           {
             List<string> list = new List<string>();
               if (Session["uzytkownicy"] != null)
                   list = (List<string>)Session["uzytkownicy"];

     string[] s = new string[list.Count];
              for (int i = 0; i < list.Count; i++ ) {
                  s[i] = list.ElementAt(i);

              }

               return s;
           } 

Zapewne dodać serializacje ale jak to zrobić?

edytowany 1x, ostatnio: quba88, 2012-01-07 12:37

Pozostało 580 znaków

2012-01-07 13:47
Moderator

Rejestracja: 11 lat temu

Ostatnio: 3 godziny temu

Lokalizacja: Wrocław

0

List<string> można łatwo zamienić w string[] za pomocą metody ToArray.


"HUMAN BEINGS MAKE LIFE SO INTERESTING. DO YOU KNOW, THAT IN A UNIVERSE SO FULL OF WONDERS, THEY HAVE MANAGED TO INVENT BOREDOM."

Pozostało 580 znaków

2012-01-07 13:49

Rejestracja: 11 lat temu

Ostatnio: 5 lat temu

0
somekind napisał(a)

List<string> można łatwo zamienić w string[] za pomocą metody ToArray.

Próbowałem i tego ale dalej mam komunikat związany z rzutowaniem

Pozostało 580 znaków

2012-01-07 14:25
Moderator

Rejestracja: 11 lat temu

Ostatnio: 3 godziny temu

Lokalizacja: Wrocław

0

Widzisz wróżkę w moim awatarze? :|
Jaki komunikat?


"HUMAN BEINGS MAKE LIFE SO INTERESTING. DO YOU KNOW, THAT IN A UNIVERSE SO FULL OF WONDERS, THEY HAVE MANAGED TO INVENT BOREDOM."

Pozostało 580 znaków

2012-01-07 15:36

Rejestracja: 11 lat temu

Ostatnio: 5 lat temu

0

Wybacz o to on:

System.InvalidOperationException: Wystąpił błąd podczas generowania dokumentu XML. ---> System.InvalidCastException: Nie można rzutować obiektu typu 'System.String[]' na typ 'System.Collections.Generic.List`1[System.String]'.

Może do końca wyjaśnię o co mi chodzi. Po zbudowaniu klienta w C# (wszystko działa jak należy), przyszła pora na Jave i tu nie działa do końca tak jak powinno wygenerowało mi wszystkie metody z WSDL ale nie widzi mi obiektów z metody pobierzzlisty tablica jest pusta może jak bym zamienił tą metodę tak aby zwracała tablicę stringów to by zadziałało

edytowany 1x, ostatnio: quba88, 2012-01-07 16:03

Pozostało 580 znaków

2012-01-07 16:15
Moderator

Rejestracja: 11 lat temu

Ostatnio: 3 godziny temu

Lokalizacja: Wrocław

0

Ale gdzie masz ten błąd?
Bo taki kod jest prawidłowy:

public string[] pobierzzarray()
{
    List<string> list = new List<string>();
    if (Session["uzytkownicy"] != null)
        list = (List<string>)Session["uzytkownicy"];

    return list.ToArray();
} 

"HUMAN BEINGS MAKE LIFE SO INTERESTING. DO YOU KNOW, THAT IN A UNIVERSE SO FULL OF WONDERS, THEY HAVE MANAGED TO INVENT BOREDOM."

Pozostało 580 znaków

2012-01-07 16:43

Rejestracja: 11 lat temu

Ostatnio: 5 lat temu

0
somekind napisał(a)

Ale gdzie masz ten błąd?
Bo taki kod jest prawidłowy:


public string[] pobierzzarray()
{
List<string> list = new List<string>();
if (Session["uzytkownicy"] != null)
list = (List<string>)Session["uzytkownicy"];
return list.ToArray();

}



Po uruchomieniu metody w przeglądarce, debuger pokazuje że dopiero po wyjściu z metody wyskakuję ten błąd

Pozostało 580 znaków

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 0, botów: 1

Robot: CCBot