Entwickler-Ecke

ASP.NET und Web - Probleme beim download


ThugMasta - Di 22.01.08 15:40
Titel: Probleme beim download
Hier erstmal mein Code

C#-Quelltext
1:
2:
WebClient webclt = new WebClient();
webclt.DownloadFile("http://..../hoarc/archiv/bilder/" + ordner1 + "/" + ordner2 + "/" + suchwort, "C:\\temp\\archiv");

Der download funktioniert auch, aber das Probleme ist das es nur ein mal geht beim zweiten aufruf nicht mehr, der Debugger meldet einfach eine WebExeption. An was könnte das liegen?


Horschdware - Di 22.01.08 15:50

Ins Blaue geraten:
webclt wird nach Verwendung nicht freigegeben?

Zeig doch mal ein Bisschen vom Code aussen herum. Dann kann dir sicher besser geholfen werden.


ThugMasta - Di 22.01.08 16:25

Ich glaube du hast recht das war auch meine erste Vermutung deswegen hab ich mal versucht webclt.Dispose() aufzurufen was auch nicht geholfen hat. Mir ist auch gerade aufgefallen das es funktioniert wenn ich das programm anderstweitig benutze zb. einfach ein bild im netzwerk suche und dann wieder versuche aus dem internet ein bild runterzuladen. Hier mal ein bischen mehr Code:
hier die Methode (Der Debugger meldet den Fehler in Zeile 9)

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
public static void archivsuche(string suchwort) 
{
string ordner1 = suchwort.ToString().Remove(0, suchwort.ToString().Length - 1);

string zwi = suchwort.ToString().Remove(0, suchwort.ToString().Length - 3);
string ordner2 = zwi.Remove(21).PadLeft(2'0');

WebClient webclt = new WebClient();
webclt.DownloadFile("http://..../hoarc/archiv/bilder/" + ordner1 + "/" + ordner2 + "/" + suchwort, "C:\\temp\\archiv");
}

und so ruf ich die Methode auf

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
if (cb_archiv.Checked)
{
try
{
Suche.archivsuche(tb_suchwort.Text.ToString());
pictureBox1.Image = Bitmap.FromFile("C:\\temp\\archiv");
}
catch (Exception)
{
lb_ergebnisse.Items.Clear();
lb_ergebnisse.Items.Add("Keine Datei gefunden");
}
}


ThugMasta - Di 22.01.08 16:47

Ok ich habs, mann muss den GarbageCollector anstossen das hatte ich zwar schon probiert aber immer nach dem download es muss davor sein also:

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
public static void archivsuche(string suchwort) 
{
            
            string ordner1 = suchwort.ToString().Remove(0, suchwort.ToString().Length - 1);

            string zwi = suchwort.ToString().Remove(0, suchwort.ToString().Length - 3);
            string ordner2 = zwi.Remove(21).PadLeft(2'0');

            GC.Collect();
            WebClient webclt = new WebClient();
            webclt.DownloadFile("http://..../hoarc/archiv/bilder/" + ordner1 + "/" + ordner2 + "/" + suchwort, "C:\\temp\\archiv");
        }


Kha - Di 22.01.08 17:14

Das kann nicht die Lösung sein. Ein using-Block um die Instanz herum sollte normalerweise genauso gut funktionieren.