在WindowsPhone8中不使用HttpClient缓存我读过为了在HttpClient使用get和post方法时禁用缓存,我需要使用WebRequestHandler作为我的HttpClientHttpClientHandler,并更改其缓存策略。但是,WebRequestHandler不在System.Net.Http.dll中,而是在System.Net.Http.WebRequest.dll中,因此我尝试将.dll添加到项目中作为参考。我收到一条错误消息:MicrosoftVisualStudio无法将对更新程序集或不兼容程序集的引用添加到项目中。再次,经过一些搜索,我得出结论,.dll文件被阻止,因为它是从另一个来源下载的。为了解锁它,我继续尝试这里的解决方案。但是,它也没有用,当我尝试添加.dll文件作为参考时,我仍然遇到同样的错误。我想要做的就是使用我的HttpClient禁用缓存,我在这里做错了吗?我愿意接受任何建议或帮助。我的系统是Windows8.1,我使用的是VisualStudio2013。我正在开发的项目是WindowsPhone8应用程序。我试图引用的.dll目录是“C:\Windows\Microsoft.NETFrameworkv4.0.30319System.Net.Http.WebRequest.dll”。先感谢您。无法在WindowsPhone8项目中引用常规.NET程序集。您只能将.NETAPI用于WindowsPhone。这是常规.NET的子集。有关详细信息,请参阅http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj207211%28v=vs.105%29.aspx。HttpClient(和HttpWebRequest)的默认缓存可以通过向查询字符串附加一个值来解决。例如,向导。字符串uri="http://host/path?cache="+Guid.NewGuid().ToString();上面评论中指出的更好的解决方案是设置“If-Modified-Since”标头。HttpWebRequest内置:HttpWebRequestrequest=HttpWebRequest.CreateHttp(url);如果(request.Headers==null)request.Headers=newWebHeaderCollection();//确保根据RFC格式化时间字符串。//否则设置标头值将为像'ti-ER'这样的区域性提供ArgumentException但是您可以使用HttpClient手动添加标头。如果使用Windows.Web.Http.HttpClient,从客户端解决这个问题的一个巧妙方法是:varhttpFilter=newWindows.Web.Http.Filters.HttpBaseProtocolFilter();httpFilter.CacheControl.ReadBehavior=Windows.Web.Http.Filters.HttpCacheReadBehavior.MostRecent;varhttpClient=newWindows.Web.Http.HttpClient(httpFilter);这样您就可以避免在使用随机查询字符串时用临时文件填充应用程序的缓存。每个响应都存储在缓存中。当然,始终建议从服务器端解决问题。添加以下标头,您不必担心每个客户端上的缓存:Cache-Control:no-cacheFullResponse:HTTP/1.1200OKContent-Length:31Content-Type:text/plain;charset=UTF-8Cache-Control:no-cache...我找到了三种在URI末尾添加随机查询字符串的方法(想想Guid.NewGuid())这避免了在客户端缓存,因为查询字符串将是不同的字符串uri="http://host.com/path?cache="+Guid.NewGuid()。字符串();在WCF服务操作的OutgoingResponse标头中指定不缓存:var__request=(HttpWebRequest)WebRequest.Create(url.ToString());如果(__request.Headers==null)__request.Headers=newWebHeaderCollection();__request.Headers.Add("缓存控制","无缓存");使用AspNetCacheProfile属性标记您的服务操作:返回__请求;}并更新您的web.config...我根据上述解决方案写了一个HttpMessageHandler:DateTimeOffset(DateTime.Now);返回base.SendAsync(request,cancellationToken);}}使用新的HttpClient(新的BypassCacheHttpRequestHandler(),true);要初始化HttpClient,您始终可以绕过缓存。这为WindowsPhone设置了另一个选项来获取新数据而不是捕获数据//你的代码在这里`在这里输入代码`}Response.Cache.SetCacheability(HttpCacheability.NoCache);在服务器页面Page_Load中,如果从aspx页面获取数据,以上是一个C#学习教程:HttpClient在WindowsPhone8中不是用来缓存所有共享内容的,如果对大家有用还有我需要了解的更多C#学习教程,希望大家多多关注-本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
