所以我有一个应用程序启动一个服务,该服务执行位置地理围栏的优点并将HTTP请求发送到服务器以供用户使用。当我的应用服务获得“已进入/退出的位置区域”事件时,它会触发HTTP请求。事情总体上运作良好。 但我遇到的问题是我在后台服务中发出的Http请求没有很高的成功率。当我在前台运行应用程序时,它往往会在95-100%的时间内成功。当应用程序被杀死且只有服务正在运行时,它往往会在大约80%的时间内成功。另外20%的时间它会超时或失败,几乎就像它没有互联网连接或其他东西。我有一个内置的重试系统,用于失败/超时的事件。我注意到,当它失败/超时时,它会在几分钟之后连续重试并失败/超时1-4次。这导致延迟的消息传递。
有没有人遇到过这个?这是正常的吗?或者我能做些什么来增加我的第一个请求成功的可能性,而不是等待多次重试?
所以位置测试运行可能是这样的:
随着应用程序在前台运行,它的超时/失败可能性大大降低。
有一些格式问题复制/粘贴此代码,所以这里是一个screenie:
// Create a request
var request = new HttpRequestMessage(this.Method, new Uri(url));
request.Headers.Clear();
this.Body = string.Empty;
// Serialize request data for the body
if (a_requestData != null)
{
this.Body = JsonConvert.SerializeObject(a_requestData);
request.Content = new StringContent(this.Body, Encoding.UTF8, "application/json");
}
// Add headers
request.Headers.Add(……..);
// More code I left out to simplify
// Using SendAsync
result = httpClient.SendAsync(request, this.RestCancellationTokenSource.Token);