Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无论实际响应如何,Polly重试策略结果始终成功_C#_.net_Restsharp_Polly - Fatal编程技术网

C# 无论实际响应如何,Polly重试策略结果始终成功

C# 无论实际响应如何,Polly重试策略结果始终成功,c#,.net,restsharp,polly,C#,.net,Restsharp,Polly,我正试图利用的能力来处理任意的结果条件 在我的测试用例中,我使用它来发出HTTP请求。以下是我的示例代码: var policy = Policy .HandleResult<IRestResponse>(r => r.Content.Contains("bla")) .Retry(2) .ExecuteAndCapture(() => { IRestClient client = new RestClien

我正试图利用的能力来处理任意的结果条件

在我的测试用例中,我使用它来发出HTTP请求。以下是我的示例代码:

var policy = Policy
    .HandleResult<IRestResponse>(r => r.Content.Contains("bla"))
    .Retry(2)
    .ExecuteAndCapture(() =>
        {
            IRestClient client = new RestClient("https://httpbin.org/anything");
            IRestRequest request = new RestRequest(Method.GET);
            var response = client.Execute(request);
            return response;
        });
var policy=policy
.HandleResult(r=>r.Content.Contains(“bla”))
.重试(2)
.ExecuteAndCapture(()=>
{
IRestClient=新的RestClient(“https://httpbin.org/anything");
IRestRequest请求=新的重新请求(Method.GET);
var response=client.Execute(请求);
返回响应;
});
这一呼吁回响了一堆东西——确切的内容与此无关。正如您在谓词中看到的,我在结果体中查找字符串“bla”

问题是
policy.output
总是成功的(
policy.output==OutcomeType.successful
),但“bla”不在结果体中。

.HandleResult(Func)
子句指定了
TResult
要被视为失败的值-
TResult
应该(在本例中)的值触发重试。如果“bla”不在结果正文中,则结果将被视为成功,不会进行重试,并且您将(预期行为)获得
。结果==OutcomeType.Successful


Polly代码库中的以下单元测试演示了
.ExecuteAndCapture(…)
在应该返回
OutcomeType.Failure
的时候是如何返回的:

HandleResult(Func)子句指定了
TResult
您希望被视为失败的值-
TResult
应该返回的值(在本例中)触发重试。如果“bla”不在结果正文中,则结果将被视为成功,不会进行重试,并且您将(预期行为)获得
。结果==OutcomeType.Successful
。如果我不明白,你能澄清你问题的最后一句吗?@mountaintraveler-oyvey。你完全正确,我颠倒了我头脑中的逻辑,指定了一个成功的条件而不是失败的条件。。。谢谢你指出。我不确定这个问题是否应该继续,因为答案只是用户错误。我可能会关闭。。。你觉得怎么样?很好。我仔细检查了一下,我们在Polly有一个单元测试,涵盖了这个案例,我们做到了:@Mountaintraveler啊,太好了-谢谢你给我指出了这一点。再次感谢…@Mountaintraveler重新考虑过这一点-也许有必要保持开放-其他人可能会犯同样的错误。你想用第一条评论中的信息(加上单元测试链接)来回答问题,我会标记为接受?