Tagi na forum.

C# 1456 XML 282
SQL 1192 sieci 268
ASP.NET 785 IIS 262
Windows 726 C++ 255
web 608 Html 218
Visual Studio 515 Information Technology 193
SQL Server 425 MSDN 167

pokaż wszystkie tagi na forum

WebClient - "Timesout are not supported on this stream"

hatesz 2011-11-08 22:37:16
0
avatar
 
 

Witam.
Ostatnio zacząłem pisać sobie aplikacje na WP7 w C# i natrafiłem na pierwszy problem, którego nie udało mi się z pomocą wyszukiwarek rozwiązać. Mianowicie - mam taki oto kawałek kodu:

WebClient client = new WebClient();

client.OpenReadCompleted += (sender, e) =>
{
    if (e.Error != null)
        return;

    Stream s = e.Result;

    XmlReader reader = XmlReader.Create(s);

    while (reader.Read())
    {
        if (reader.NodeType == XmlNodeType.Element)
        {
            if (reader.Name == "title")
            {
                if (reader.MoveToContent() == XmlNodeType.Text)
                {
                    title = reader.Value;
                }
            }

            if (reader.Name == "description")
            {
                if (reader.MoveToContent() == XmlNodeType.Text)
                {
                    content = reader.Value;
                }
            }

            if (reader.Name == "pubDate")
            {
                if (reader.MoveToContent() == XmlNodeType.Text)
                {
                    publishedDate = DateTime.Parse(reader.Value);
                }
            }

            result.Add(new Feed(title, content, publishedDate));
        }
    }
};
client.OpenReadAsync(new Uri(this.Source, UriKind.Absolute));
 

 Jak ustawię breakpointa na przedostatnią linijkę tego kodu (klamrę zamykającą) to debugger zwraca taką wartość zmiennej e:

Gdy podobny kod odpalę jako aplikacja konsolowa to wszystko działa - Result zawiera kod strony, którą pobieram. Nie wiem o co chodzi z tym Timeoutem. Z Silverlightem dopiero zaczynam, a i z C# nie jestem mistrzem... ;)


tagi: C#   Silverlight   XML
Liczba postów:

szogun.krepa  2011-11-09 05:38:39 #1
0
avatar
 
 

Problem jest chyba w tym ze strumienie w SL nie lubia synchronicznosci. Moze zamiast pobierac strumien pobierz od razu caly tekst i na jego podstawie tworz xmlreadera??


if (PomoglCi)

{

Click("Pomógł mi");

}

Strona szoguna

m.iwanowski  2011-11-09 09:45:53 #2
0
avatar
 
 

Zapomnij o tych timeoutach i powiedz jaki masz błąd?


Pozdrawiam

Marcin Iwanowski

 

...::: Jeżeli mój post jest rozwiązaniem Twojego problemu, kliknij "Rozwiązanie" :::...

hatesz  2011-11-09 13:51:11 #3
0
avatar
 
 

Problemem jest właśnie to, że e.Result nic nie zawiera. Podobny kod na aplikacji konsolowej pobiera źródło XML-a idealnie.

Stream s = e.Result;


I w tym momencie "s" zawiera null-a.


m.iwanowski  2011-11-09 14:10:16 #4
0
avatar
 
 

Ale jak postawiłeś breakpointa to pokazałeś że Result jest wypełniony jakimś Streamem nawet ma jakąś długość, to w końcu jak jest?


Pozdrawiam

Marcin Iwanowski

 

...::: Jeżeli mój post jest rozwiązaniem Twojego problemu, kliknij "Rozwiązanie" :::...

hatesz  2011-11-13 13:45:13 #5
0
avatar
 
 

Jakoś sobie z tamtym poradziłem (szczerze mówiąc to nie mam pojęcia jak to się stało, ale chyba Result zawierał jednak dobrą zawartość tylko ja źle go przetwarzałem).

Nie wiem czy tutaj można zadać dwa pytania w jednym wątku, ale zaryzykuję, zwłaszcza, że jest on dość podobny do poprzedniego.

void client_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
    if (e.Error != null)
        return;

    if (string.IsNullOrEmpty(e.Result))
        return;

    XmlReader reader = XmlReader.Create(new StreamReader(e.Result));

    while (reader.Read())
    {
                
    }
}

 

Linijka tworzenia XmlReadera zwraca przez debuggera taki błąd: "Attempt to access the method failed: System.IO.StreamReader..ctor(System.String)"


Edytowano 1 raz. Ostatnio 2011-11-13 13:46:08 przez hatesz.
m.iwanowski  2011-11-14 09:13:06 #6
0
avatar
 
 

Spróbuj tak:

XmlReader reader = XmlReader.Create(new StringReader(e.Result))

Edytowano 2 razy. Ostatnio 2011-11-14 15:41:25 przez hatesz.

Pozdrawiam

Marcin Iwanowski

 

...::: Jeżeli mój post jest rozwiązaniem Twojego problemu, kliknij "Rozwiązanie" :::...

hatesz  2011-11-14 15:41:19 #7
0
avatar
 
 

Ooo, wielkie dzięki! :)


Udziel odpowiedzi

avatar
Treść wpisu:

Zaloguj się lub Zarejestruj się aby wykonać tę czynność.

Idź na górę strony