mam jakiś plik do przesłania, a niektóre z plików nie powiodło się, ponieważ wpis jest asynchroniczny i synchroniczny nie ..tworzenie synchronicznych klienta http: czekać na odpowiedź
Próbuję zrobić to wezwanie jako zsynchronizowany rozmowy ..
Chcę poczekać na odpowiedź.
Jak mogę ustawić to połączenie jako synchroniczne?
static async Task<JObect> Upload(string key, string url, string
sourceFile, string targetFormat)
{
using (HttpClientHandler handler = new HttpClientHandler {
Credentials = new NetworkCredential(key, "")
})
using (HttpClient client = new HttpClient(handler))
{
var request = new MultipartFormDataContent();
request.Add(new StringContent(targetFormat), "target_format");
request.Add(new StreamContent(File.OpenRead(sourceFile)),
"source_file",
new FileInfo(sourceFile).Name);
using (HttpResponseMessage response = await client.PostAsync(url,
request).ConfigureAwait(false))
using (HttpContent content = response.Content)
{
string data = await content.ReadAsStringAsync().ConfigureAwait(false);
return JsonObject.Parse(data);
}
}
}
Każda pomoc doceniona!
Czy możesz podać więcej szczegółów na temat niepowodzenia? Wykonywanie asynchroniczne nie powinno powodować niepowodzenia przesyłania. Jeśli naprawdę musisz, możesz użyć Task.Wait i sprawdzić wartość zwracaną, aby zobaczyć, czy zadanie zostało zakończone. https://msdn.microsoft.com/en-us/library/dd235606(v=vs.110).aspx –
Myślę, że nie powinieneś używać ConfigureAwait. Sprawdź bez ConfigureAwait. – Amit
@rikkigibson kontynuowanie po 'czekaj' na surowym wątku z puli wątków (bez poprawnie skonfigurowanego wątku HttpContext/Culture lub UI) generalnie będzie wskazywał NRE w wywołującym metodę (ani kod wywołujący, ani błąd, ani struktura nie jest pokazana przez OP tak mocno, aby dokładny problem). Jak zauważył Amit, 'ConfigureAwait' jest zwykle sposobem na niepoprawne działanie kodu (w nadziei na rozwiązanie innych problemów z synchronizacją). To znaczy. tutaj jest dyskusja na temat korzystania z ASP.Net - http://stackoverflow.com/questions/13489065/best-practice-to-call-configureawait-for-all-server-side-code. –