Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# System.Net.Http.HttpClient自标头修改后添加_C#_.net_Uwp_Dotnet Httpclient_If Modified Since - Fatal编程技术网

C# System.Net.Http.HttpClient自标头修改后添加

C# System.Net.Http.HttpClient自标头修改后添加,c#,.net,uwp,dotnet-httpclient,if-modified-since,C#,.net,Uwp,Dotnet Httpclient,If Modified Since,我试图从windows universal应用程序发出Http Get请求,并看到一个奇怪的行为。(不确定这是一个通用应用程序这一事实是否相关) 所讨论的简化代码如下: var client = new HttpClient(); var response = await client.GetAsync("https://storage.googleapis.com/pictureframe/settings.json"); var s = await response.Content.Read

我试图从windows universal应用程序发出Http Get请求,并看到一个奇怪的行为。(不确定这是一个通用应用程序这一事实是否相关)

所讨论的简化代码如下:

var client = new HttpClient();
var response = await client.GetAsync("https://storage.googleapis.com/pictureframe/settings.json");
var s = await response.Content.ReadAsStringAsync();
在按预期工作的单元测试或控制台应用程序中,变量
s
包含json内容

但是,在我尝试添加该代码的应用程序(针对Windows 10 build 10240的通用Windows应用程序)中,原始http请求如下所示:

GET https://storage.googleapis.com/pictureframe/settings.json HTTP/1.1
Host: storage.googleapis.com
If-Modified-Since: Sun, 27 Dec 2015 18:00:08 GMT
If-None-Match: "5c43f7f07270bda3b7273f1ea1d6eaf7"
Connection: Keep-Alive
If-Modified-Since
标题正确地导致google返回
304-未修改
,因此我没有得到任何json文件。问题是我没有添加标题,我也不知道在哪里添加标题以及如何停止标题


有没有一种情况下会出现这种情况,如果有,人们如何控制这种行为。

这一定是
System.Net.Http.HttpClient
位于
Windows.Web.Http.HttpClient
之上的windows10.Net Core的副作用。控制台应用程序仍然使用常规的.NET框架

由于无法使用
System.Net.Http.HttpClient/HttpClientHandler
System.Net.Http.WebRequestHandler
控制缓存,因此我建议您切换到
Windows.Web.Http

然后尝试:

var filter = new HttpBaseProtocolFilter();

// Disable cache of responses.
filter.CacheControl.WriteBehavior = HttpCacheWriteBehavior.NoCache;

// Pass filter to HttpClient constructor.
var client = new HttpClient(filter);

var response = await client.GetAsync(new Uri("http://example.com"));
var responseString = await response.Content.ReadAsStringAsync();

请确保卸载并重新安装应用程序以清理internet缓存。

您是否有代理?@cleiton我没有。感觉uwp应用程序不正确地使用了一些缓存。如果您使用
Windows.Web.Http.HttpClient
而不是
System.Net.Http.HttpClient
,这会有什么不同吗?@Clemens-是的,使用Windows.Web.Http客户端的行为是相同的。我不确定这里发生了什么,但重新启动使这一切消失了。