Ich habe folgenden Code in der Konsolenanwendung verwendet, Post-Aufrufe sind nicht abgeschlossen, bis ich Console.Read() verwende; am Ende oder client.PostAsync ("api/xxx", contentPost) .wait(). Aber in Web-Anwendung muss ich keine Wait() -Methode verwenden. Ich möchte nicht wait() Methode verwenden. Kann mir jemand mit diesem Problem helfen.Warum ist HttpClient.PostAsync() nicht in Cosnole Application beendet, aber in Webanwendung beendet?
static void Main(string[] args)
{
CreateLog();
}
private static void CreateLog()
{
for(int i=0;i<100;i++)
ProcessLog(new LogMessage() {
});
Console.Write("Press Enter to exit");
Console.ReadLine();
}
private static void ProcessLog(LogMessage message)
{
//Post message to web service
HttpClient client = new HttpClient();
// ConfigurationSettings.GetConfig("web api")
client.BaseAddress = new Uri(@"web api url");
client.DefaultRequestHeaders.Accept.Add(
new MediaTypeWithQualityHeaderValue("application/json"));
HttpContent contentPost = new StringContent(JsonConvert.SerializeObject(message), Encoding.UTF8, "application/json");
client.PostAsync("api/xxx", contentPost);
}
Ja.Was ist die Lösung für dieses Problem? Und Console.Read() ist ein Workaround, ich möchte es nicht verwenden. – Gangz
Sie müssen warten, bis alle Ihre Anrufe abgeschlossen sind, bevor Sie die Anwendung beenden. – EJoshuaS
Wie ermittelt man, ob es aktive Anrufe gibt? – Gangz