Ausnahmefehler während einer WebClient-Anforderung
- VB.NET
Sie verwenden einen veralteten Browser (%browser%) mit Sicherheitsschwachstellen und können nicht alle Funktionen dieser Webseite nutzen.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Es gibt 28 Antworten in diesem Thema. Der letzte Beitrag () ist von Trade.
-
-
Ich tippe mal auf ...
Die Anforderung wird von der Website verweigert (WebException).
Vielleicht läßt der penetrierte ( ) Server, keinen zweiten download in kurzer Zeit zu !? -
Meine Güte. Gebt doch einfach mal den StackTrace mit an. Da steht nämlich die Exception drin, die das Probldm ist. Außerdem solltest Du gleich nen WebClient verwenden und nicht den My-Namespace. Der wrappt das Ganze eh nur und das wohl sehr ranzig.#define for for(int z=0;z<2;++z)for // Have fun!
Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose!
Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da -
@Trade falls ich es mit dem WebClient versuche, bekomme ich wieder die selbe Exception nach dem zweiten Download
-
-
Quellcode
- bei System.Environment.GetStackTrace(Exception e, Boolean needFileInfo)
- bei System.Environment.get_StackTrace()
- bei YDVM.Form1.Request_IMAGE(String url) in C:\Users\----\documents\visual studio 2010\Projects\YDVM\YDVM\Form1.vb:Zeile 23.
- bei YDVM.Form1.Button1_Click(Object sender, EventArgs e) in C:\Users\----\documents\visual studio 2010\Projects\YDVM\YDVM\Form1.vb:Zeile 48.
- bei System.Windows.Forms.Control.OnClick(EventArgs e)
- bei System.Windows.Forms.Button.OnClick(EventArgs e)
- bei System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
- bei System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
- bei System.Windows.Forms.Control.WndProc(Message& m)
- bei System.Windows.Forms.ButtonBase.WndProc(Message& m)
- bei System.Windows.Forms.Button.WndProc(Message& m)
- bei System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
- bei System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
- bei System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
- bei System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
- bei System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
- bei System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
- bei System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
- bei System.Windows.Forms.Application.Run(ApplicationContext context)
- bei Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.OnRun()
- bei Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.DoApplicationModel()
- bei Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(String[] commandLine)
- bei YDVM.My.MyApplication.Main(String[] Args) in 17d14f5c-a337-4978-8281-53493378c1071.vb:Zeile 81.
- bei System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
- bei System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
- bei Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
- bei System.Threading.ThreadHelper.ThreadStart_Context(Object state)
- bei System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
- bei System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
- bei System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
- bei System.Threading.ThreadHelper.ThreadStart()
HierDieser Beitrag wurde bereits 1 mal editiert, zuletzt von „XinSho“ ()
-
Ich habe mein Problem selber herausgefunden!
Trotzdem Danke
Hier war mein Fehler ->
VB.NET-Quellcode
-
- Dim i As Integer = 0 'Ohne eine Integer würde sich die Datei überschreiben, dennoch braucht mein Programm diese Datei noch. Habe jetz eine Integer gesetzt um denn Datenname von denn Anderen zu unterscheiden, und das sie, sie nicht überschreibt :)
- Dim webclient As Net.WebClient
- webclient = New Net.WebClient
- i += 1
- webclient.DownloadFile(url, My.Computer.FileSystem.SpecialDirectories.Temp & "\tmpimage" & i & ".bmp")
-
Aua, ganz ehrlich aua.
@Basis2 Bevor Du hier irgendwelchen Blödsinn verzapfst, lass es doch bitte einfach sein.
1. Warum catchst Du das? Somit kann man erstmal alles durchlesen und sich die Zeile suchen anstatt direkt jene via IDE zu erhalten.
2.MsgBox
ist VB6-Ranz.MessageBox.Show
verwenden, auch wenn es hier nur zum Catchen war.
Basis2 schrieb:
Es geht mit WebClient auch nicht, wie der TE will
Was bitte?
@XinSho Die Lösung ist ja von der Idee her vielleicht recht, aber total ranzig umgesetzt.
1. Option Strict ON! Ein Integer ist KEIN String.
2. Warum instanziierst Du nicht direkt in einer Zeile auf einmal?
3.Environment.SpecialFolders
verwenden, vergiss doch endlich mal den My-Namespace.
4.Path.Combine
nutzen, das ist ja schrecklich anzuschauen.#define for for(int z=0;z<2;++z)for // Have fun!
Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose!
Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da -
Ich bin mal so frech und nutze die Gelegenheit mich selbst zu prüfen.
Und zwar, ob ich die Kritik von Trade vollständig richtig verstanden und umgesetzt habe:
Spoiler anzeigen VB.NET-Quellcode
- Dim url As String = ""
- Dim path As String
- Dim i As Integer = 0
- Dim webclient As New Net.WebClient
- Dim temp As String = IO.Path.GetTempPath
- Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
- i += 1
- path = IO.Path.Combine(temp & "\tmpimage" & i.ToString & ".bmp")
- webclient.DownloadFile(url, path)
- End Sub
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „timonator“ ()
-
@timonator Ich hätte da auch noch was zu verbesserung beizutragen.
My.Computer.FileSystem.SpecialDirectories.Temp
mit
System.IO.Path.GetTempPath
austauschen
-
-
Hab geguckt, schön das du IO.Path.Combine reineditiert hast, aber wo ist jetzt der Pfad zum Tempordner?
Edit @Trade mit Environment.SpecialFolders kommst du glaub ich nicht an den Pfad zum Tempordner, mit IO.Path.GetTempPath schon.
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Murdock“ ()
-
-
-
-
@Basis2 Du hast anscheinend gar nicht verstanden worum es beim Programmieren geht.
Richtig, der User will, dass es funktioniert. Dazu muss das Programm aber sauber geschrieben sein etc. Also: Nein, ist nicht egal.#define for for(int z=0;z<2;++z)for // Have fun!
Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose!
Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da -
-
Der My-Namespace wrappt so Sachen. Und zwar so ziemlich auf die ranzigste Weise, die nur geht. Und das ist nicht unbedingt grade performant.
Folglich sollte klar sein, warum IO sauberer ist und man das verwenden sollte.#define for for(int z=0;z<2;++z)for // Have fun!
Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose!
Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da -
timonator schrieb:
Ich bin mal so frech und nutze die Gelegenheit mich selbst zu prüfen.
Ansonsten wichtig ist immer gute Kapselung, also dass man nicht mehr Klassenvariablen in einer Klasse rumzufahren hat als unbedingt nötig.
Käme bei mir dann erstmal so raus:VB.NET-Quellcode
- Public Class frmTests
- Dim url As String = ""
- Dim i As Integer = 0
- Dim webclient As New Net.WebClient
- Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
- i += 1
- Dim path = IO.Path.Combine(IO.Path.GetTempPath, "tmpimage" & i & ".bmp")
- webclient.DownloadFile(url, path)
- End Sub
- '...
-
ErfinderDesRades schrieb:
dass man nicht mehr Klassenvariablen in einer Klasse rumzufahren hat als unbedingt nötig
Sicher wird IO.Path.GetTempPath sehr effizient sein, andererseits ist das Ergebnis auch so statisch, dass man nicht zwingend jedesmal das Framework bemühen müsste.
Bei aufwendigeren Aufrufen kann es sich schon lohnen, so ein Ergebnis zwischenzuspeichern.--
If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
--
-
Ähnliche Themen
-
oliver14800 - - Sonstige Problemstellungen
-
5 Benutzer haben hier geschrieben
- Gast (16)
- Trade (5)
- ErfinderDesRades (4)
- petaod (3)
- Maik39 (1)