HttpClient GetStringAsync - Il ne revient jamais

Nouveau ASP.NET l'API Web HttpClient m'a donne de drôles de résultats. Voici mon code:

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);
    }
}

Cela ne revient pas et la console apparaît soudainement et disparaît. Lorsque je modifie le code comme ci-dessous, il fonctionne comme il est censé:

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;
}

La moindre idée de ce que serait le problème?

Qui n'a même pas compiler. Un point d'entrée (Main) ne peut pas être asynchrone. Il échouera avec l'CS4009 erreur.
Dans la Async CTP, il est permis (mais une mauvaise idée)
Intéressant. Le meilleur qu'ils refuser maintenant.
merci les gars, j'essayais de voir si l'application fonctionne. Ainsi, l'application de console est juste un test. mais bon pour le savoir. Je vais essayer ça ailleurs.
La même idée est titulaire pour les tests unitaires. Juste assurez-vous d'utiliser async Task plutôt que async void. Ce dernier est une forme de fire-and-forget.

OriginalL'auteur tugberk | 2012-03-26