首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Web上的RetryPolicy会导致超时

Web上的RetryPolicy会导致超时
EN

Stack Overflow用户
提问于 2020-05-21 01:31:43
回答 1查看 235关注 0票数 0

我有一个Web调用另一个web调用来获取一些信息。为了使应用程序更具弹性,我按照以下步骤实现了一个HttpTransientErrorDetectionStrategy:https://alexandrebrisebois.wordpress.com/2013/02/21/defining-an-http-transient-error-detection-strategy-for-rest-calls/

之后,我使用下面这样的代码调用另一个web应用程序:

代码语言:javascript
复制
RetryPolicy _retryPolicy = new RetryPolicy<HttpTransientErrorDetectionStrategy>(
    new ExponentialBackoff(retryCount: 2, minBackoff: TimeSpan.FromSeconds(0), maxBackoff: TimeSpan.FromSeconds(10), deltaBackoff: TimeSpan.FromSeconds(2)));

var _httpClient = new HttpClient
{
    BaseAddress = new Uri("http://www.microsoft.com")
};

HttpResponseMessage response = _retryPolicy.ExecuteAsync(async () => await _httpClient.GetAsync($"", HttpCompletionOption.ResponseContentRead)).Result;

_httpClient.GetAsync的电话被卡住了,我不知道为什么。如果我删除_retryPolicy,并直接使用_httpClient.GetAsync,它将在几秒钟内返回。

我在控制台应用程序上有类似的代码,可以调用同一个web应用程序,这很好,所以这似乎是我在我的web中使用它的方式所特有的。这是为了成为Azure上的一个应用程序,但是当我在本地调试时也会发生这种情况。有人知道为什么会被困住吗?我如何调试这个?

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-21 16:23:15

我在控制台应用程序上有类似的代码,可以调用同一个web应用程序,这很好,所以这似乎是我在我的web中使用它的方式所特有的。

你发布的代码在这里被阻塞了:

代码语言:javascript
复制
HttpResponseMessage response = _retryPolicy.ExecuteAsync(...).Result;

不要阻塞异步代码。相反,使用await

代码语言:javascript
复制
HttpResponseMessage response = await _retryPolicy.ExecuteAsync(...);

如果我删除_retryPolicy,并直接使用_httpClient.GetAsync,它将在几秒钟内返回。

如果原始代码阻塞,并且必须阻塞异步代码(出于某种原因),则可以使用黑客攻击

代码语言:javascript
复制
HttpResponseMessage response = _retryPolicy.ExecuteAsync(async () => await _httpClient.GetAsync($"", HttpCompletionOption.ResponseContentRead).ConfigureAwait(false)).Result;

await

代码语言:javascript
复制
HttpResponseMessage response = _retryPolicy.ExecuteAsync(() => _httpClient.GetAsync($"", HttpCompletionOption.ResponseContentRead)).Result;

P.S. DecorrelatedJitterBackoffV2.

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61925703

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档