Ich verwende das WebBrowser-Steuerelement in .Net, um einige Affiliate-Marketing-Conversions von Drittanbietern auszuführen.
Ich habe eine Queue-Tabelle in einer Datenbank mit allen Skripten / Images, die ausgeführt werden sollen. Ich durchlaufe alle diese in einer WinForms-App mit dem WebBrowser-Steuerelement. Nachdem ich ein Skript / Image ausgeführt habe, lege ich das WebBrowser-Steuerelement ab, setze es auf null und aktualisiere es mit einer neuen WebBrowser-Kontrollinstanz.
Betrachten Sie diese URL: Ссылка
RenderScript.aspx zeigt ein Bild mit der URL z. B .: Ссылка
anIch benutze Fiddler, um alle Anfragen und Antworten zu sehen, und wenn dieselbe URL zweimal ausgeführt wird, verwendet sie irgendeine Art von Cache. Dieser Cache befindet sich unterhalb des WebBrowser-Steuerelements selbst.
Dieser Cache bedeutet, dass die img.ashx nicht aufgerufen wird.
Ich habe versucht, mit Internet Explorer die URL anzufordern: Ссылка und drücke F5. Dann ist es perfekt gefragt.
Wenn ich jedoch auf die Adressleiste klicke und die Eingabetaste drücken, um wieder zur selben URL zu navigieren, wird sie nicht angefordert. Wenn ich Firefox verwende, werde ich die Seite und das Bild jedes Mal abfragen, egal ob ich F5 benutze oder von der Adressleiste navigiere.
Ich habe einige Win32 API-Aufrufe gefunden ( Ссылка ), die den Cache löschen konnten. Es funktionierte auf meinem lokalen Rechner. Dann wurde die App auf einem Server mit Windows Server 2003 Standard x64 bereitgestellt (mein eigener Computer ist Vista x86).
Und jetzt funktionieren die API-Aufrufe zum Löschen des Cache nicht.
Irgendwelche Ideen, warum die API-Aufrufe unter Windows Server nicht funktionieren, funktioniert aber unter Vista? Beide Maschinen laufen mit IE8.
Ich hatte das gleiche Problem (ziemlich) vor einer Weile. Microsoft hat eine Seite, die dabei sehr hilfreich war:
Ich habe eine Klasse aus dem Microsoft-Beispiel erstellt, musste aber auch ein paar if-Anweisungen hinzufügen, um die Verarbeitung zu stoppen, wenn keine weiteren Elemente vorhanden sind. Es ist schon eine Weile her, aber ich bin mir ziemlich sicher, dass es einen Fehler auslösen würde (siehe ERROR_NO_MORE_ITEMS
im folgenden Code).
Ich hoffe, es ist hilfreich!
%Vor%Um es in Ihrem Code zu verwenden, rufen Sie einfach:
%Vor%vor dem Aufruf der Navigationsmethoden.
Fiddler verwendet grundsätzlich denselben Code wie im KB-Artikel, um den WinINET-Cache zu löschen, und ich verwende ihn jeden Tag auf Win2k3.
Anstatt den gesamten Cache des Benutzers zu löschen, müssen Sie den richtigen HTTP-Antwortheader festlegen, um das Zwischenspeichern zu verhindern. Weitere Informationen zum WinINET-Caching finden Sie hier: Ссылка
(Alternativ können Sie einfach einen randomisierten Abfragezeichenfolgenparameter hinzufügen. Auf diese Weise wird jedesmal, wenn das Steuerelement eine Anforderung für die Ressource findet, die URL anders und der Cache wird automatisch umgangen.)
Dieser KB-Artikel, auf den alle verweisen, enthält zahlreiche Fehler (aus denen der Quellcode der ausgewählten Antwort stammt), und ich habe ~ 2 Tage vergeudet, um ihn in allen notwendigen Einstellungen zum Laufen zu bringen. Es ist eine Kopie, die über das Internet eingefügt wird, und es gibt zahlreiche Fehler, die auf OS- und IE-Version basieren.
Fiddler wurde ursprünglich von einem Microsoft-Mitarbeiter geschrieben und wird von FiddlerCore.dll unterstützt. Telerik (die derzeitigen Eigentümer / Betreuer / Verkäufer) von Fiddler aktualisieren, pflegen und verschenken FiddlerCore kostenlos. Wenn Sie keine Referenz zu FiddlerCore hinzufügen möchten, können Sie die DLL zerlegen, und es zeigt die korrekte Methode, alle diese schrecklich dokumentierten WinINet-Funktionen aufzurufen, aber ich denke, es hier zu veröffentlichen wäre für Telerik / Plagarismus ein schlechter Dienst.
Derzeit wird Fiddlercore hier gehostet: Ссылка
Tags und Links c# winforms webbrowser-control