- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
新的 ASP.NET Web API HttpClient 一直给我一些奇怪的结果。这是我的代码:
class Program {
static async void Main(string[] args) {
var address = "http://localhost:3895/api/urls";
Console.WriteLine(await getStringAsync(address));
Console.ReadLine();
}
public static async Task<string> getStringAsync(string uri) {
var httpClient = new HttpClient();
return await httpClient.GetStringAsync(uri);
}
}
这永远不会回来,控制台突然出现又消失。当我如下更改代码时,它按预期工作:
static void Main(string[] args) {
var address = "http://localhost:3895/api/urls";
Console.WriteLine(getString(address));
Console.ReadLine();
}
public static string getString(string uri) {
var httpClient = new HttpClient();
return httpClient.GetStringAsync(uri).Result;
}
知道会出现什么问题吗?
最佳答案
async
on Main
在 VS11/.NET 4.5 编译器中是不允许的,因此我假设您使用的是 Async CTP。如果完全可以选择使用 .NET 4.5,请务必进行转换。
除此之外,它不起作用的原因是因为 async
,或更一般地说,任务依赖于能够以某种方式发出信号以执行其余代码。它适用于 .Result
,因为代码同步运行,所以问题不适用。
没有对控制台应用程序的内置支持,因为它们通常不像 WinForms 那样使用消息循环,但您可以查看 Microsoft Visual Studio Async CTP\Samples\(C#测试)单元测试\AsyncTestUtilities
,特别是 GeneralThreadAffineContext.cs
,以获取也适用于控制台应用程序的基本示例。
关于c# - HttpClient GetStringAsync - 它永远不会回来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9878270/
我有一种使用 Google API 翻译文本的工作方法,如下所示; public string TranslateText(string input, string sourceLanguage, s
我有(我的 url 列表大约有 1000 个 url),我想知道是否有更有效的调用来自同一站点的多个 url(已经更改 ServicePointManager.DefaultConnectionLim
新的 ASP.NET Web API HttpClient 一直给我一些奇怪的结果。这是我的代码: class Program { static async void Main(string[
using System.Net.Http; using Microsoft.VisualStudio.TestTools.UnitTesting; using System.Threading.
我正在尝试使用 GetStringAsync 方法访问我的 url,但调用挂起并且永远不会结束。当我在浏览器中检查它时它工作完美但不知何故在我的代码中它永远不会结束。我的代码: public bool
我正在使用 Windows Phone/Store 应用程序的新运行时开发 Windows 通用应用程序。我正在使用以下代码向服务器发送请求并期待返回 HTML 响应。但是,当我返回字符串并将其显示在
我认为 HttpClient 应该能够处理 301 错误代码,并重定向到正确的地址。但是对于以下地址 ( https://www.npr.org/templates/rss/podcast.php?i
我有一个控制台应用程序,用户输入一个字符串(一个数字,例如“1”),我根据输入的数字发出GET请求,并返回GET的字符串结果。 我想异步执行,因为一般来说,所有 I/O 操作都应该是异步的,所以我基本
我有以下内容,我尝试从服务器下载一个字符串: HttpClient client = new HttpClient(); var getResponsestring = await client.Ge
我有一个 Windows Phone 8 项目,我也开始使用 PCL(可移植类库)项目,因为我要构建一个 Win8 应用程序。 但是,在调用我的 api(在 Azure 中)时,我的 HttpClie
我是 C# 的新手,更不用说 Windows Phone 开发了:) 我正在尝试发送请求,获取 JSON 响应,但如果出现错误(例如 401),则能够告诉用户此类。这是我的代码: async Task
如果你有以下方法: public async Task GetTAsync(url) { return await httpClient.GetStringAsync(url); } publ
我真的是 Xamarin 开发的新手,我刚刚尝试使用 Xamarin.Forms 来使用共享代码开发 Android 和 iOS 应用程序,我在这里要做的是使用 Plugin.RestClient N
最近,我开发了一个WP8的应用程序,一开始一切正常。但是,从昨天晚上开始,我在尝试从 url 检索 RSS 数据 时遇到错误。 这是我用来获取数据的部分代码: try { HttpClient
在winform中,点击按钮调用此方法将链接内容下载为字符串,然后在文本框中显示字符串长度。这一切都是异步发生的。有没有办法同步执行此操作? 最佳答案 您可以通过获取.Result来创建任何任务 bl
我正在关注这个 blog post关于如何在 ASP.NET Web API 2 中使用批处理支持。服务器代码似乎可以工作并监听端口 12345。 当我运行客户端代码时,它到达这一行: dynam
我有以下代码 static void Main(string[] args) { string url = "http://www.google.com"; Conso
本文转载自微信公众号「汪宇杰博客」,作者汪宇杰。转载本文请联系汪宇杰博客公众号。 在 ASP.NET Core 单元测试中模拟HttpClient.GetStringAsync()
我正在创建一个新的 Windows 8.1 应用程序,只是为了测试我遇到的这个错误。该应用只有一个功能: private async void TestMethod() {
我是一名优秀的程序员,十分优秀!