Kein cache mit HttpClient in Windows Phone 8
Habe ich gelesen, dass, um um das caching zu deaktivieren, während die Verwendung von get-und post-Methoden in HttpClient
ich brauchen, um eine WebRequestHandler
als meine HttpClient
's HttpClientHandler
und ändern Ihre cache-policy. Allerdings WebRequestHandler
ist nicht innerhalb System.Net.Http.dll, sondern in System.Net.Http.WebRequest.dll so ich versucht, um die .dll in das Projekt als Referenz. Ich bekam eine Fehlermeldung:
Microsoft Visual Studio
Einen Verweis auf eine höhere version oder inkompatible assembly nicht
zu dem Projekt Hinzugefügt.
Wieder, nach ein wenig suchen kam ich zu dem Schluss, dass die .dll-Datei wurde blockiert, weil es heruntergeladen wurde aus einer anderen Quelle. Um die Karte freizugeben, ging ich auf den Versuch der Lösung hier. Jedoch, es hat nicht funktioniert und ich bin noch immer die gleiche Fehlermeldung, wenn ich versuche, fügen Sie die .dll-Datei als Referenz.
Alles was ich will zu tun ist, deaktivieren Sie die Zwischenspeicherung mit meinem HttpClient, mache ich etwas falsch hier? Ich bin offen für jede Art von Rat oder Hilfe.
Mein system ist Windows 8.1 und ich verwende Visual Studio 2013. Das Projekt, das ich arbeite, ist eine Windows Phone 8 Anwendung. Das Verzeichnis von .dll-ich versuche, die Referenz ist "C:\Windows\Microsoft.NET\Framework\v4.0.30319\System.Net.Http.WebRequest.dll". Vielen Dank im Voraus.
- Wie über die Einstellung ifModifiedSince header zum aktuellen Zeitpunkt in Ihrer Anfrage-header..
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es nicht möglich, die Referenz regelmäßig .NET-assemblies in einem Windows Phone 8 Projekt. Sie können nur die .NET API für Windows Phone. Dies ist eine Teilmenge der regulären .NET. Sehen http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj207211%28v=vs.105%29.aspx für mehr info.
Die standardmäßige Zwischenspeicherung von HttpClient (und HttpWebRequest) kann umgangen werden, indem ein Wert für den query-string. Zum Beispiel, eine guid.
Eine bessere Lösung, wie schon in dem Kommentar oben, ist die "If-Modified-since" - header. HttpWebRequest hat es gebaut in:
Aber man könnte hinzufügen, die header manuell mit einem HttpClient denke ich.
DateTime.UtcNow.ToString("r");
so, dass der timestamp ist richtig formatiert gemäß den RFC.Wenn mit
Windows.Web.Http.HttpClient
, die sauber Weg, um dieses Problem zu beheben, von der client-Seite ist:Diese Weise vermeiden Sie, füllen sich die app-cache mit dem temp-Dateien bei der Verwendung von random-query-strings. Jede Antwort wird im cache gespeichert.
Natürlich ist es immer empfehlenswert, um das Problem zu lösen von der server-Seite. Fügen Sie folgende Kopfzeile, und Sie brauchen nicht zu befürchten-cache auf jedem client:
Vollständige Antwort:
Fand ich 3 Möglichkeiten
Und aktualisieren Sie Ihre web.config
Schrieb ich eine
HttpMessageHandler
basiert auf der Lösung oben:Verwenden
new HttpClient(new BypassCacheHttpRequestHandler(), true);
zum initialisieren IhrerHttpClient
dann kann man immer umgehen-cache.Diese für windows phone, um neue Daten abzurufen, anstatt den Fang von Daten
andere alternative ist festgelegt
im server-Seite Page_Load-wenn u get Daten aus aspx-Seite