【发布时间】:2016-10-14 22:08:07
【问题描述】:
我手头有一个相当令人困惑的问题。尝试将一些 JSON 发布到远程服务器上的一些 .php 文件中。
代码如下:
wc = new WebClient();
Uri urlToRequest = new Uri(webserviceUrl + url);
wc.UploadStringCompleted += new UploadStringCompletedEventHandler(wc_DownloadDataCompleted);
wc.Headers.Add(HttpRequestHeader.ContentType, "application/json");
var stopwatch = Stopwatch.StartNew();
wc.UploadStringAsync(urlToRequest, json);
Console.WriteLine("Async time: " + stopwatch.ElapsedMilliseconds);
我将发布到同一台服务器上的 2 个 php 文件,相同的 JSON(预期不同的结果)。
当我发布到第一个文件时,我会在控制台中看到:
Async time: 2576
当我向其他人发帖时,我会在控制台中看到这个:
Async time: 0
我发送的 JSON 是一个非常简单的{"user":"bob","action":"get"}
在调试时,我在wc = new WebClient(); 放置了一个断点,然后逐行执行 Step Over,在第一次调用时,Step Over 在 UploadStringAsync 处挂起 2-3 秒,但在第二次调用时它只是跳转在它上面(应该)。
.php 文件位于同一台服务器上。
任何想法为什么同一个调用在 2 个调用中的行为不同,UploadStringAsync 不应该在所有情况下都是异步的?
【问题讨论】:
-
你确定服务器第二次没有缓存结果吗?
标签: c# asynchronous webclient