gpt4 book ai didi

c# - Windows Phone 8 中的 HttpClient 没有缓存

转载 作者:太空狗 更新时间:2023-10-29 18:00:31 25 4
gpt4 key购买 nike

我读到要在 HttpClient 中使用 get 和 post 方法时禁用缓存,我需要使用 WebRequestHandler 作为我的 HttpClientHttpClientHandler,并更改其缓存策略。但是,WebRequestHandler 不在 System.Net.Http.dll 中,而是在 System.Net.Http.WebRequest.dll 中,因此我尝试将 .dll 添加到项目中作为引用。我收到一条错误消息:

Microsoft Visual Studio

A reference to a higher version or incompatible assembly cannot be added to the project.

再次,经过一些搜索,我得出结论,该 .dll 文件被阻止,因为它是从其他来源下载的。为了解锁它,我继续尝试解决方案 here .但是,它也不起作用,当我尝试添加 .dll 文件作为引用时,我仍然遇到同样的错误。

我只想使用我的 HttpClient 禁用缓存,我在这里做错了吗?我乐于接受任何类型的建议或帮助。

我的系统是 Windows 8.1,我使用的是 Visual Studio 2013。我正在处理的项目是 Windows Phone 8 应用程序。我试图引用的 .dll 目录是“C:\Windows\Microsoft.NET\Framework\v4.0.30319\System.Net.Http.WebRequest.dll”。提前谢谢你。

最佳答案

无法在 Windows Phone 8 项目中引用常规 .NET 程序集。您只能使用适用于 Windows Phone 的 .NET API。这是常规 .NET 的子集。参见 http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj207211%28v=vs.105%29.aspx了解更多信息。

可以通过向查询字符串附加一个值来解决 HttpClient(和 HttpWebRequest)的默认缓存。例如,向导。

string uri = "http://host/path?cache=" + Guid.NewGuid().ToString();

如上面评论中指出的,更好的解决方案是设置“If-Modified-Since” header 。 HttpWebRequest 内置了它:

HttpWebRequest request = HttpWebRequest.CreateHttp(url);
if (request.Headers == null)
request.Headers = new WebHeaderCollection();
// Make sure that you format time string according RFC.
// Otherwise setting header value will give ArgumentException for culture like 'ti-ER'
request.Headers[HttpRequestHeader.IfModifiedSince] = DateTime.UtcNow.ToString("r");

但我想您可以使用 HttpClient 手动添加 header 。

关于c# - Windows Phone 8 中的 HttpClient 没有缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21134380/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com