ich unten Code habe, das Problem verursacht, während der DatenGetAsync Timeout Problem verursacht
var result = client.GetAsync(requestUri).Result;
Holen Wenn ich requestUri
von Browser schlug dann funktioniert es gut. aber von oben Code gibt es unter Fehler.
Fehler:
ein oder mehrere Fehler occurred.An Fehler aufgetreten, während die request.The Senden zugrunde liegende Verbindung wurde geschlossen: Ein unerwarteter Fehler ist aufgetreten auf einem send.Authentication fehlgeschlagen, da die Gegenstelle den Transport geschlossen hat Strom.
Stapel Trace1:
bei System.Threading.Tasks.Task
1.GetResultCore(Boolean waitCompletionNotification) at foo(String resultUrl) at dooo(String param, String resultUrl) at foo.<>c__DisplayClass2.<Product>b__0(String x, String y) at foo[T](Func
3 fn) bei System.Net.HttpWebRequest.EndGetResponse (IAsyncResult asyncResult) bei System.Net.Http.HttpClientHandler.GetResponseCallback (IAsyncResult ar) bei System.Net.TlsStream.EndWrite (IAsyncResult asyncResult) bei System.Net.ConnectStream.WriteHeadersCallback (IAsyncResult ar)
Stapel Trace2
bei System.Threading.Tasks.Task
1.GetResultCore(Boolean waitCompletionNotification) at Foo1(String resultUrl) at Foo2(String param, String resultUrl) at Foo3.<>c__DisplayClass2.<Product>b__0(String x, String y) at Foo4(Func
3 fn) bei System.Net.HttpWebRequest.EndGetResponse (IAsyncResult asyncResult) bei System.Net.Http.HttpClientHandler.GetResponseCallback (IAsyncResult ar) bei System.Net. TlsStream.EndWrite (IAsyncResult asyncResult) bei System.Net.ConnectStream.WriteHeadersCallback (IAsyncResult ar) bei System.Web.Http.Controllers.ApiControllerActionInvoker.d__0.MoveNext() --- Ende des Stack-Trace von früheren Speicherort, wo Ausnahme wurde geworfen --- bei System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (Task-Task) bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Aufgabe t Fragen Sie) bei System.Runtime.CompilerServices.TaskAwaiter1.GetResult() at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__5.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__5.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter
1.GetResult() bei System.Web.Http.Filters.ActionFilterAttribute.d__0.MoveNext() --- Ende des Stack-Trace von früheren Speicherort, wo Ausnahme ausgelöst wurde - - bei System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (Task-Task) bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Task-Task) bei System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() bei System .Web.Http.Filters.ActionFilterAttribute.d__5.MoveNext()
Auch ich versuchte einen ersichtlichen Anruf, aber kein Glück. Können wir das Anforderungstimeout für die get-Anforderung in diesem Szenario erhöhen?
Awaitable Code habe ich versucht,
var result = await client.GetAsync(requestUri);
if (!result.IsSuccessStatusCode) throw new Exception(string.Format("Unable to receive data from Uri: {0}", uri.ToString()));
// write the results
using (var write = File.Create(filePath))
using (var read = await result.Content.ReadAsStreamAsync())
{
read.Seek(0, SeekOrigin.Begin);
read.CopyTo(write);
}
tun Sie einige innere Ausnahmen haben?dort könnte es mehr Infos geben –
Verwenden Sie nicht '.Result', entweder machen Sie Ihren Call-Stack async und verwenden Sie' erwarten' oder wechseln von 'HttpClient' zu' WebClient' und verwenden Sie es synchrone Methoden. –
@ScottChamberlain: Ja, ich habe das auch versucht. –