Ich habe gelesen, dass ich, um das Caching bei Verwendung der Methoden get und post in HttpClient
zu deaktivieren, ein WebRequestHandler
als mein HttpClient
's HttpClientHandler
verwenden und seine Cache-Richtlinie ändern muss. % Co_de% befindet sich jedoch nicht in System.Net.Http.dll, sondern in System.Net.Http.WebRequest.dll. Daher habe ich versucht, die DLL dem Projekt als Referenz hinzuzufügen. Ich habe eine Fehlermeldung erhalten:
Microsoft Visual Studio
Ein Verweis auf eine höhere Version oder inkompatible Assembly kann nicht sein dem Projekt hinzugefügt.
Nach einer kurzen Suche kam ich zu dem Schluss, dass die DLL-Datei blockiert war, weil sie von einer anderen Quelle heruntergeladen wurde. Um es zu entsperren, versuchte ich die Lösung hier . Es funktionierte jedoch auch nicht und ich bekomme immer noch den gleichen Fehler, wenn ich versuche, die .dll-Datei als Referenz hinzuzufügen.
Alles was ich tun möchte, ist das Caching mit meinem HttpClient zu deaktivieren, mache ich hier irgendetwas falsch? 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, an dem ich arbeite, ist eine Windows Phone 8-Anwendung. Das Verzeichnis von .dll, auf das ich zu verweisen versuche, ist "C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ System.Net.Http.WebRequest.dll". Vielen Dank im Voraus.
Es ist nicht möglich, auf reguläre .NET-Assemblys in einem Windows Phone 8-Projekt zu verweisen. Sie können nur die .NET-API für Windows Phone verwenden. Dies ist eine Teilmenge von regulären .NET. Weitere Informationen finden Sie Ссылка .
Das Standard-Caching von HttpClient (und HttpWebRequest) kann umgangen werden, indem ein Wert an die Abfragezeichenfolge angehängt wird. Zum Beispiel eine GUID.
%Vor%Eine bessere Lösung, wie oben im Kommentar erwähnt, besteht darin, den Header "If-Modified-Since" zu setzen. HttpWebRequest hat es eingebaut:
%Vor%Aber Sie könnten den Header manuell mit einem HttpClient hinzufügen, denke ich.
Wenn Sie Windows.Web.Http.HttpClient
verwenden, ist die Methode clean , um dieses Problem von der Clientseite aus zu beheben:
Auf diese Weise vermeiden Sie, den Cache der Anwendung mit temporären Abfragezeichenfolgen mit temporären Dateien zu füllen. Jede Antwort wird im Cache gespeichert.
Natürlich ist es immer empfehlenswert, das Problem von der Serverseite aus zu beheben. Fügen Sie den folgenden Header hinzu, und Sie müssen sich nicht um den Cache auf jedem Client kümmern:
%Vor%Vollständige Antwort:
%Vor%Ich habe 3 Wege gefunden
string uri=" Ссылка " + Guid.NewGuid (). ToString ();
%Vor%
%Vor%
Und aktualisieren Sie Ihre web.config
%Vor%
Dies für Windows Phone, um neue Daten zu erhalten, anstatt Daten abzufangen
%Vor%Eine andere Alternative ist eingestellt
%Vor%in der Server-Seite Page_Load, wenn Sie Daten von der aspx-Seite erhalten
Ich habe eine HttpMessageHandler
basierend auf der obigen Lösung geschrieben:
Verwenden Sie new HttpClient(new BypassCacheHttpRequestHandler(), true);
, um Ihre HttpClient
zu initialisieren, dann können Sie den Cache immer umgehen.
Tags und Links .net c# windows-phone-8