新しいASP.NET Web API HttpClientは私に奇妙な結果をもたらしました。私のコードは以下の通りです:HttpClient GetStringAsync - 戻ってこない
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;
}
何が問題になるのでしょうか?
これもコンパイルされません。エントリポイント( 'Main')は非同期にすることはできません。 CS4009エラーで失敗します。 – vcsjones
@vcsjones非同期CTPでは許可されていますが(悪い考えです) – hvd
@hvd面白いです。彼らは今でもそれを許可しないことをお勧めします。 – vcsjones